A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© czwanglei 金牌黑马   /  2014-7-18 16:12  /  1983 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        Socket可以理解成一个IP地址加一个端口,构成的一个“插座”...的确这个词很形象,有了它,我们就相当于给程序上打了个插槽,于是其他程序就可以通过网络“插”进来了
        在客户端上我们只需要一个Socket,但是在服务端上,我们需要用一个Socket来监视某端口,然后根据来访的客户端来建立新的Socket负责数据通信。
代码总结如下:
  服务端:
  1. //1.服务器端定义用于监听的Socket对象:
  2. Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  3. //设定IP和端口
  4. IPAddress ip = IPAddress.Parse(IP地址字符串);
  5. IPEndPoint point = new IPEndPoint(ip, int.Parse(端口字符串));
  6. //把IP和端口绑定到Socket上
  7. socket.Bind(point);
  8. //设置可同时排队的人数
  9. socket.Listen(count);

  10. //2.开启新线程(Listen方法)进行监听:
  11. Thread th = new Thread(Listen);
  12. th.IsBackground = true;
  13. th.Start();

  14. //3.在新线程(Listen方法中)循环监听:
  15. while (true)
  16. {
  17.     //新建一个叫connect的Socket,监听socket的IP地址和端口号
  18.     connect = socket.Accept();
  19.     //开启新线程(RecMsg方法)用于接收消息
  20.     Thread th = new Thread(RecMsg);
  21.     th.IsBackground = true;
  22.     th.Start();
  23. }

  24. //4.在新线程(RecMsg方法中)循环接收消息:
  25. while (true)
  26. {
  27.     byte[] buffer = new byte[length];
  28.     //如果连接没关
  29.     if (connect.Connected)
  30.     {
  31.         //用connect接收消息,返回接收到的长度
  32.         int length = connect.Receive(buffer);
  33.         //处理或显示消息
  34.         ....
  35.     }
  36. }
复制代码

客户端:
  1. //1.客户端端定义用于发送信息的Socket对象并连接服务器:
  2. Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  3. IPAddress ip = IPAddress.Parse(服务器IP地址字符串);
  4. IPEndPoint point = new IPEndPoint(ip, int.Parse(服务器端口字符串));
  5. client.Connect(point);

  6. //2.定义好byte数组buffer,给服务器发送信息:
  7. client.Send(buffer);
复制代码

3 个回复

倒序浏览
不错,顶一下
回复 使用道具 举报
例子是TCP连接方式,改成UDP后的代码呢?
回复 使用道具 举报
童心 发表于 2014-7-19 19:02
例子是TCP连接方式,改成UDP后的代码呢?

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);的最后改为ProtocolType.Udp
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马