1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| public class ClientSocket { public Socket socket; public int clientId; private static int CLIENT_BEGIN_ID = 1; private byte[] cacheBytes = new byte[1024]; private int caheNum = 0; public ClientSocket(Socket socket) { this.clientId = CLIENT_BEGIN_ID++; this.socket = socket; this.socket.BeginReceive(cacheBytes,caheNum,cacheBytes.Length,SocketFlags.None,ReceiveCallback,this.socket); } private void ReceiveCallback(IAsyncResult result) { try { caheNum = this.socket.EndReceive(result); Console.WriteLine(Encoding.UTF8.GetString(cacheBytes, 0, caheNum)); caheNum = 0; if(socket.Connected) this.socket.BeginReceive(cacheBytes,caheNum,cacheBytes.Length,SocketFlags.None,ReceiveCallback,this.socket); else { Console.WriteLine("没有链接,不用在接消息"); } } catch (SocketException e) { Console.WriteLine("接收消息错误:"+e.ErrorCode+","+e.Message); } } public void Send(String str) { if (this.socket.Connected) { byte[] bytes = Encoding.UTF8.GetBytes(str); this.socket.BeginSend(bytes,0,bytes.Length,SocketFlags.None,SendCallback,this.socket); } else { Console.WriteLine("没有链接,能收消息"); } } private void SendCallback(IAsyncResult result) { try { this.socket.EndSend(result); } catch (SocketException e) { Console.WriteLine("发送失败:"+e.ErrorCode+","+e.Message); } } }
|