学习笔记(10) : Socket 编程典型代码积累

网络编程实现的机制:
 
服务器端:
申请一个socket
绑定到一个IP地址和端口上
开启侦听,等待接受连接
 
客户端:
申请一个socket
连接服务器(指明IP、端口)
 
服务器端:
接收到连接请求后,产生一个新的socket与客户端建立连接并进行通讯,原侦听socket继续侦听
 
 
 
 
============================================================================
 
一、客户端 连接 服务器:
 
服务器端代码:
            //创建 服务器 负责监听的套接字 ,参数(使用IP4)
            socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //获得文本框中的IP地址
            IPAddress address = IPAddress.Parse(txtIp.Text.Trim());
            //创建包含IP和Port的网络节点对象
            IPEndPoint endpoint = new IPEndPoint(address, int.Parse(txtPort.Text.Trim()));
            //将负责监听的套接字绑定到唯一的IP和端口上
            socketWatch.Bind(endpoint);
            //设置监听队列的长度
            socketWatch.Listen(10);
            Socket sokConnection = socketWatch.Accept();   //一旦客户端的请求,就会返回一个和该客户端通信的套接字sokConnection
                ShowMsg("客户端连接成功");
 
 
 
客户端连接代码:
            IPAddress address = IPAddress.Parse(txtIp.Text.Trim());
            IPEndPoint endPoint = new IPEndPoint(address,int.Parse(txtPort.Text.Trim()));
            Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socketClient.Connect(endPoint);
 
 
====================================================================================
 
二、发送、接收数据
 
发送数据:
            string strMsg = txtMsgSend.Text.Trim();
            //将字符串 转成 方便网络传送的二进制数据
            byte[] arrMsg = System.Text.Encoding.UTF8.GetBytes(strMsg);
            socketClient.Send(arrMsg);
            ShowMsg("我说:    "+strMsg);
 
接收数据:
 
void RecMsg()
        {
            while (true)
            {
                //定义一个接收用的 缓存区(2M字节数组)
                byte[] arrMsgRec = new byte[1024 * 1024 * 2];
                //将接收到的数据存入arrMsgRec 数组,并返回真正接收到的数据的长度
                int length=socketClient.Receive(arrMsgRec);
                string strMsgRec = System.Text.Encoding.UTF8.GetString(arrMsgRec,0,length);  //后面两个参数用于解决换行,来自视频10
                ShowMsg(strMsgRec);
            }
        }
 
上一篇:GodSon Easyui 结合Pluplaod插件的文件分割上传


下一篇:在PHP中使用CURL