本文实例分享了C#实现socket收发数据的具体代码,供大家参考。具体内容如下。服务器命名空间TestServer{publicpartialclassServerForm:Form{SocketsocketSend;//将要远程连接的客户端IP地址和socket存放在集合DictionarydicSocket=newDictionary();publicServerForm(){InitializeComponent();}privatevoidbtnStart_Click(objectsender,EventArgse){try{//当点击后开始监听,在服务器上创建一个socket负责监听IP地址和端口号SocketsocketWatch=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressip=IPAddress.Any;//;IPAddress.Parse(txtServer.Text)IPEndPointpoint=newIPEndPoint(ip,Convert.ToInt32(txtPort.Text));//监听socketWatch.Bind(point);ShowMsg("监听成功");socketWatch.Listen(10);线程th=新线程(听);th.IsBackground=true;th.Start(socketWatch);}catch{}}voidListen(objecto){//等待客户端连接并创建负责通信的SocketsocketWatch=oasSocket;while(true){socketSend=socketWatch.Accept();dicSocket.Add(socketSend.RemoteEndPoint.ToString(),socketSend);cboUsers.Items.Add(socketSend.RemoteEndPoint.ToString());ShowMsg(socketSend.RemoteEndPoint.ToString()+":"+"连接成功");Threadth=newThread(Recive);th.IsBackground=true;th.Start(socketSend);}}voidRecive(objecto){socketSend=oasSocket;while(true){//客户端连接成功后,服务端应该接受来自客户端的消息byte[]buffer=newbyte[1024*1024*2];//实际接收到的有效字节数intr=socketSend.Receive(buffer);如果(r==0){中断;}stringstr=Encoding.UTF8.GetString(buffer,0,r);ShowMsg(socketSend.RemoteEndPoint+":"+str);}}voidShowMsg(stringstr){txtLog.AppendText(str+"rn");}privatevoidForm1_Load(objectsender,EventArgse){Control.CheckForIllegalCrossThreadCalls=false;}privatevoidbtnSend_Click(objectsender,EventArgse){stringstr=txtMsg.Text;byte[]buffer=Encoding.UTF8.GetBytes(str);字符串ip=cboUsers.SelectedItem.ToString();dicSocket[ip].发送(缓冲区);//socketSend.Send(缓冲区);txtMsg.Text="";}privatevoidbtnSendUser_Click(objectsender,EventArgse){stringjson=JsonConvert.SerializeObject(UserList());byte[]buffer=Encoding.UTF8.GetBytes(json);socketSend.Send(缓冲区);}privateListUserList(){ListuserList=newList();用户用户=空;stringsql="select*fromuser_table";SqlCommandcmd=SqlUtils.ConnectSql(sql);SqlDataReadersdr=cmd.ExecuteReader();while(sdr.Read()){user=newUser(sdr.GetInt32(0),sdr.GetString(1),sdr.GetString(2),sdr.GetInt32(3));userList.Add(用户);}返回用户列表;}}}客户端namespaceTestClient{publicpartialclassClientForm:Form{SocketsocketSend;publicClientForm(){InitializeComponent();}privatevoidbtnStart_Click(objectsender,EventArgse){try{//创建一个负责通信的套接字socketSend=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressip=IPAddress.Parse(txtServer.Text);IPEndPointpoint=newIPEndPoint(ip,Convert.ToInt32(txtPort.Text));socketSend.Connect(点);ShowMsg("连接成功");Threadth=newThread(Recive);th.IsBackground=true;日。开始();}catch{}}voidRecive(){while(true){//客户端连接成功后,服务端应该接受来自客户端的消息byte[]buffer=newbyte[1024*1024*2];//实际收到的有效字节数intr=socketSend.Receive(buffer);如果(r==0){中断;}stringstr=Encoding.UTF8.GetString(buffer,0,r);ShowMsg(socketSend.RemoteEndPoint+":"+str);}}voidShowMsg(stringstr){txtLog.AppendText(str+"rn");}privatevoidForm1_Load(objectsender,EventArgse){Control.CheckForIllegalCrossThreadCalls=false;}privatevoidbtnSend_Click(objectsender,EventArgse){stringstr=txtMsg.Text.Trim();byte[]缓冲区=编码.UTF8。获取字节(海峡);socketSend.Send(缓冲区);txtMsg.Text="";}}}效果发送json数据本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: