C#-Socket(TCP)
生活随笔
收集整理的這篇文章主要介紹了
C#-Socket(TCP)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//提示,線程里面不要給控件賦值LinkSocket.Send(result, length, 0);自己掛起
private void button1_Click(object sender, EventArgs e){bool ok = guaqi(IPAddress.Parse(rip.Text) ,int.Parse (rpont .Text ));if (ok){richTextBox1.Text = "掛起成功!";jiantingkehuduan();//監聽}else richTextBox1.Text = "掛起失敗";
}連接別人
private void button2_Click(object sender, EventArgs e)
{bool ok = Link (IPAddress.Parse(rip.Text), int.Parse(rpont.Text));if (ok){richTextBox1.Text = "連接成功!";clientSocket.Send(Encoding.UTF8.GetBytes("aaaaa"));}else richTextBox1.Text = "連接失敗";
} //CS************************************************//定義public int Pont;//端口public IPAddress Ip;//ippublic Socket MySocket;//定義一個套接字//掛起socket
public bool guaqi(IPAddress ip, int pont)
{try //掛起socket,可以根據這個地方try一下判斷啟動服務器是否成功{Pont = pont;Ip = ip;MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);MySocket.Bind(new IPEndPoint(Ip, Pont));MySocket.Listen(30);//最多監聽30個return true;//掛起成功}catch{return false;//掛起失敗}
}//監聽客戶端
public void jiantingkehuduan()
{Thread myThread = new Thread(listen);myThread.IsBackground = true;myThread.Start();
}
//監聽函數
public void listen()
{while (true){Socket now = MySocket.Accept();//監聽到的這個賦值在p1ser..上//每接收到一個連接就給他開一個單獨的send便于交流Thread tt = new Thread(send);//send是接收并發送消息tt.IsBackground = true;tt.Start(now);//建立一個和p1一起的發送接受線程}
}//send//接收和發送消息
public void send(object clientSocket)
{Socket nowsocket = (Socket)clientSocket;byte[] result = new byte[1024];while (true)//一直和p1保持聯系{try //可以try一下,catch的時候就是對方下線或者故障了 {//接收******************int len = nowsocket.Receive(result);//接收消息,并且存在result里string tmp = Encoding.UTF8.GetString(result, 0, len);//可以用if(tmp=="")來判斷干什么 //發送**************//nowsocket.Send(Encoding.UTF8.GetBytes("aaaaa"));}catch{return; //連接斷開}}
}//連接
Socket clientSocket;
public bool Link(IPAddress ip, int pont)
{clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);try{clientSocket.Connect(new IPEndPoint(ip, pont));//int len = clientSocket.Receive(result);//string tmp = Encoding.UTF8.GetString(result, 0, len);return true;}catch{return false;}
}
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的C#-Socket(TCP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#-获取磁盘,cpu,内存信息
- 下一篇: C#-文件操作