zoukankan      html  css  js  c++  java
  • 学习笔记(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);
                }
            }
     
  • 相关阅读:
    什么是反向代理,反向代理有什么好处?
    动态的favicons
    管理emacs dotemacs文件
    自己的部分小软件合计 2000 2013(很久没有更新了)
    经典CSS 横向导航菜单【下载】
    Web 调试,兼容浏览器的在线调试(系列)
    sql server 执行大脚本时报警告没有足够的内存继续执行程序
    c#对接顺丰图片文件
    Sql Server行转列 动态拼接sql
    centos6.2更新yum源
  • 原文地址:https://www.cnblogs.com/key1309/p/3145043.html
Copyright © 2011-2022 走看看