Socket通信过程
2012-04-13 14:52
183 查看
服务器端:
Accept 以同步方式从侦听套接字的连接请求队列中提取第一个挂起的连接请求,然后创建并返回新的Socket。不能使用返回的这个
Socket 接受连接队列中的任何附加连接。然而,可以调用返回的
Socket 的RemoteEndPoint 方法来标识远程主机的网络地址和端口号。
在阻止模式中,Accept 将一直处于阻止状态,直到传入的连接尝试排入队列。连接被接受后,原来的
Socket 继续将传入的连接请求排入队列,直到您关闭它。
IPAddress ip = IPAddress.Parse(txtIp.Text.Trim());//得到IP地址 IPEndPoint endpoint=new IPEndPoint(ip,int.Parse(txtPort.Text.Trim()));IP端点(IP,端口号构建) socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);(负责监听的套接字) //绑定到IP端点上面 socketWatch.Bind(endpoint); //设置同时的最大队列数 socketWatch.Listen(10); //下面为不断的监听并创建(负责通信的套接字),用线程来操作 Thread watch=null; Dictionary<string,socket> dictsocket=new Dictionary<string,socket>();//用来记录客户端连接的IP端点,和服务器端与之通信的套接字 void Watch() { while(true)//不断的监听 { Socket socketConnection=null;//负责通信的套接字 socketConnection=socketWatch.Accept();//负责 dictsocket.add(socketConnection.RemoteEndPoint.Tostring(),socketConnection);//放入到dict中 lblonline.Items.add(socketConnection.RemoteEndPoint.Tostring());//对新连接的客户端请求加入到在线列表中. } } watch = new Thread(WacthConnection); watch.IsBackground = true; watch.Start(); ShowMsg("服务器启动成功"); //发送信息选择通过选择ListBox里面的值来操作 string title=txtTitle.Text.Trim(); byte[] bytedate=Encoding.UTF8.GetBytes(title); if (lbonine.SelectedItem.ToString()!="") { dictsocket[lbonine.SelectedItem.ToString()].Send(bytedate);//传递byte[] }
相关文章推荐
- Socket通信过程和函数详解
- socket 的通信过程
- socket 的通信过程
- socket的通信过程
- Linux socket编程入门及客户端服务器端通信实现 – 提高篇:TCP连接过程分析
- 基于TCP的socket通信过程及例子
- socket基础之c/s通信过程
- Socket通信中的多进程编程(TCP/IP通信过程)
- 一起talk C栗子吧(第一百四十七回:C语言实例--流socket通信过程)
- Socket编程之聊天程序 - 模拟Fins/ModBus协议通信过程
- socket通信之socket的通信过程
- Socket通信过程和函数详解
- 调试一个socket通信bug的心理过程和反思
- java中处理socket通信过程中粘包的情况
- socket基础之c/s通信过程
- 简单socket通信过程(TCP)
- 一起talk C栗子吧(第一百四十八回:C语言实例--数据报socket通信过程)
- 黑马程序员---有关Socket间的通信过程理解
- TCP/IP详解(卷2实现)学习笔记(一)udp的socket通信过程底层实现概述(1)
- socket通信过程