天天看點

socket簡單demo

Server、Client端分别在兩個項目中

Server端:

try

{

int port = 4000;

string host = "127.0.0.1";

IPAddress ipa = IPAddress.Parse(host);//将IP字元串轉換為IP位址的執行個體

IPEndPoint ipe = new IPEndPoint(IPAddress.Any, port);//将網絡端點表示為ip位址和端口号 允許任意IP

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//建立一個socket類

s.Bind(ipe);//綁定端口号

s.Listen(0);//開始監聽

Console.WriteLine("wait for connect");

Socket tmp = s.Accept();//為新連接配接建立新的socket

Console.WriteLine("get a connect");

while (true)

string recvStr = "";

byte[] recvBytes = new byte[1024];

int bytes;

bytes = tmp.Receive(recvBytes, recvBytes.Length, 0);//從用戶端接收資訊

recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);

Console.WriteLine("get message:{0}", recvStr);//把從用戶端傳來的資訊顯示出來

string sendStr = "Yeah! Client send message sucessful";

byte[] bs = Encoding.ASCII.GetBytes(sendStr);

tmp.Send(bs, bs.Length, 0);//傳回用戶端成功資訊

//tmp.Close(); 

//s.Close();

}

catch (ArgumentNullException ex)

Console.WriteLine(ex);

catch (SocketException ex)

{ Console.WriteLine(ex); }

Console.WriteLine("press enter to exit");

Console.ReadLine();

Client端:

            {

                int port = 4000;

                string host = "127.0.0.1";

                IPAddress ipa = IPAddress.Parse(host);

                IPEndPoint ipe = new IPEndPoint(ipa, port);//把ip和端口轉化為ipendpoint執行個體

                Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//建立一個socket

                Console.WriteLine("connecting.....");

                s.Connect(ipe);//連接配接到伺服器

                while (true)

                {

                    Console.WriteLine("請輸入要發送的資訊:");

                    string sendStr = Console.ReadLine();

                    byte[] bs = Encoding.ASCII.GetBytes(sendStr);

                    Console.WriteLine("SendMessage");

                    s.Send(bs, bs.Length, 0);//發送測試資訊

                    string recvStr = "";

                    byte[] recvBytes = new byte[1024];

                    int bytes;

                    bytes = s.Receive(recvBytes, recvBytes.Length, 0);//從伺服器端接收傳回資訊

                    recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);

                    Console.WriteLine("ClientGetMessage:{0}/r/n/r/n", recvStr);//顯示伺服器傳回資訊

                    //s.Close();            

                }

            }

            catch (ArgumentNullException ex)

            { Console.WriteLine(ex); }

            catch (SocketException ex)

            Console.WriteLine("press enter to exit");

            Console.ReadLine();