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#-文件操作