C#学习笔记-socket通信(同步,客户端+服务器,TCP)

1,客户端(同步+TCP)
同步:程序会阻塞,等待网络通信的信息。
1-1,客服端(法1-Socket)

     Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//初始化套接字
     socketClient .Connect("192.168.0.3", 8888);//连接服务器
     byte[] byArr = new byte[1024];
........
     Array.Clear(byArr, 0, byArr.Length);//清除数据
     socketClient .Send(Encoding.ASCII.GetBytes("ClientConnect"));//发送数据
     socketClient .Receive(byArr);//接收数据
     sRecv = Encoding.ASCII.GetString(byArr);

注:
地址族(AddressFamily枚举),Socket 用来解析地址的寻址方案
套接字类型(SocketType枚举)
协议类型(ProtocolType枚举),TCP/UDP等

1-1,客服端(法2-TcpClient)

     TcpClient tcpClient = new TcpClient();
     tcpClient.Client.Connect("192.168.0.3", 8888);
     byte[] byArr = new byte[1024];
........
     Array.Clear(byArr, 0, byArr.Length);//清除数据
     tcpClient.Send(Encoding.ASCII.GetBytes("ClientConnect"));//发送数据
     tcpClient.Receive(byArr);//接收数据
     sRecv = Encoding.ASCII.GetString(byArr); 

2,服务器(同步+TCP)
2-1,服务器(法1-Socket)

      IPEndPoint serverIP=new IPEndPoint(IPAddress.Any,8888);
      Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      socketServer.Bind(serverIP);//绑定IP地址
      socketServer.Listen(50);//监听端口
      byte[] byArr = new byte[1024];
      ......
      Socket socketClient = socketServer.Accept();//等待外部客户端连接
      socketClient .Send(Encoding.ASCII.GetBytes("ConnectOK"));//发送数据
      socketClient .Receive(byArr);//接收数据
      sRecv = Encoding.ASCII.GetString(byArr); 

2-1,服务器(法2-TcpListener )

      TcpListener tcpListener = new TcpListener(8888);
      tcpListener.Start();
      byte[] byArr = new byte[1024];
      ......
      Socket tcpClient= tcpListener.AcceptSocket();
      tcpClient.Send(Encoding.ASCII.GetBytes("ConnectOK"));//发送数据
      tcpClient.Receive(byArr);//接收数据
      sRecv = Encoding.ASCII.GetString(byArr); 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值