C#的網(wǎng)絡(luò)傳輸

服務(wù)端

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace MySurver
{

class Program
{
    private static Socket serverSocket;
    private static int PORT = 1780;

    private const int BUFFER_SIZE = 2048;
    private static readonly byte[] buffer = new byte[BUFFER_SIZE];

    //初始化服務(wù)器
    static void InitServer()
    {
        Console.WriteLine("InitServer");
        //實(shí)例化服務(wù)器
        serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        //IPAddress.Any IPAddress.Parse("192.168.0.147")
        //實(shí)例化一個(gè)IP端口對(duì)象
        //IPAddress.Any是自動(dòng)匹配本機(jī)的IP
        IPEndPoint ep = new IPEndPoint(IPAddress.Any, PORT);

        //綁定IP端口
        serverSocket.Bind(ep);

        //設(shè)置客戶(hù)端連接數(shù)量
        serverSocket.Listen(100);
    }

    //監(jiān)聽(tīng)客戶(hù)端的方法
    static void AcceptClientSocket()
    {
        //監(jiān)聽(tīng)客戶(hù)端的變化,一直等待客戶(hù)端的鏈接
        //如果有客戶(hù)端鏈接會(huì)終止等待跳轉(zhuǎn)到 AcceptClientCallBack回掉函數(shù)里面去
        serverSocket.BeginAccept(AcceptClientCallBack, null);
    }

    //客戶(hù)端連接回調(diào)函數(shù)
    static void AcceptClientCallBack(IAsyncResult ar)
    {
        Socket socket;
        //必須要終,才能重新開(kāi)啟一個(gè)新的連接
        try
        {
            socket = serverSocket.EndAccept(ar);
        }
        catch (ObjectDisposedException)
        {
            return;
        }
        
        //接收客戶(hù)端的消息
        socket.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, socket);

        Console.WriteLine("有新的客戶(hù)端連接");
        //再次重新開(kāi)啟一個(gè)新的連接
        serverSocket.BeginAccept(AcceptClientCallBack, null);
    }



    private static void ReceiveCallback(IAsyncResult AR)
    {
        Socket current = (Socket)AR.AsyncState;
        int received;

        try
        {
            received = current.EndReceive(AR);
        }
        catch (SocketException)
        {
            Console.WriteLine("Client forcefully disconnected");
            current.Close();
            return;
        }

        byte[] recBuf = new byte[received];
        Array.Copy(buffer, recBuf, received);
        string text = Encoding.ASCII.GetString(recBuf);
        Console.WriteLine("Received Text: " + text);

        //繼續(xù)監(jiān)聽(tīng)消息
        current.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, current);
    }


    static void Main(string[] args)
    {
        //初始化
        InitServer();
        //接收新的客戶(hù)端
        AcceptClientSocket();

        Console.ReadLine();

    }
}

}

客戶(hù)端

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace MyClient
{
class Program
{

    private const int BUFFER_SIZE = 2048;

    private static byte[] buffer = new byte[BUFFER_SIZE];

    private static Socket ClientSocket = new Socket
        (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    private const int PORT = 1780;

    static void Main()
    {
        Console.Title = "Client";
        ConnectToServer();
        RequestLoop();
    }

    private static void ConnectToServer()
    {
        int attempts = 0;

        while (!ClientSocket.Connected)
        {
            try
            {
                attempts++;
                Console.WriteLine("Connection attempt " + attempts);
                ClientSocket.Connect(IPAddress.Parse("192.168.0.137"), PORT);
            }
            catch (SocketException)
            {
                Console.Clear();
            }
        }

        Console.Clear();
        Console.WriteLine("Connected");
    }

    private static void RequestLoop()
    {
        while (true)
        {
            SendRequest();
        }
    }

    private static void SendRequest()
    {
        string request = Console.ReadLine();
        SendString(request);
    }

    private static void SendString(string text)
    {
        byte[] buffer = Encoding.ASCII.GetBytes(text);
        ClientSocket.Send(buffer, 0, buffer.Length, SocketFlags.None);
    }
}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末较店,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芋膘,老刑警劉巖仁锯,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件山叮,死亡現(xiàn)場(chǎng)離奇詭異也颤,居然都是意外死亡尊惰,警方通過(guò)查閱死者的電腦和手機(jī)柬姚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)拟杉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人量承,你說(shuō)我怎么就攤上這事搬设。” “怎么了撕捍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵拿穴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我忧风,道長(zhǎng)默色,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任狮腿,我火速辦了婚禮腿宰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缘厢。我一直安慰自己吃度,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布贴硫。 她就那樣靜靜地躺著椿每,像睡著了一般。 火紅的嫁衣襯著肌膚如雪英遭。 梳的紋絲不亂的頭發(fā)上间护,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音挖诸,去河邊找鬼汁尺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛税灌,可吹牛的內(nèi)容都是我干的均函。 我是一名探鬼主播亿虽,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼苞也!你這毒婦竟也來(lái)了洛勉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤如迟,失蹤者是張志新(化名)和其女友劉穎收毫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體殷勘,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡此再,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玲销。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片输拇。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贤斜,靈堂內(nèi)的尸體忽然破棺而出策吠,到底是詐尸還是另有隱情,我是刑警寧澤瘩绒,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布猴抹,位于F島的核電站,受9級(jí)特大地震影響锁荔,放射性物質(zhì)發(fā)生泄漏蟀给。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一阳堕、第九天 我趴在偏房一處隱蔽的房頂上張望跋理。 院中可真熱鬧,春花似錦嘱丢、人聲如沸薪介。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至道偷,卻和暖如春缀旁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勺鸦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工并巍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人换途。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓懊渡,卻偏偏與公主長(zhǎng)得像刽射,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剃执,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容