网络编程实现的机制:
 
服务器端:
申请一个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);
            }
        }
 

学习笔记(10) : Socket 编程典型代码积累的更多相关文章

  1. 网络编程学习笔记:Socket编程

    文的主要内容如下: 1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().connect ...

  2. Python Web学习笔记之socket编程

    Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...

  3. IOS学习笔记之 Socket 编程

    最近开始静心学习IOS编程,虽然起步有点晚,但有句话说的好:“如果想去做,任何时候都不晚”.所以在今天,开始好好学习IOS.(本人之前4年都是搞.Net的,java也培训过一年) 打算学IOS,从哪入 ...

  4. python学习笔记10 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  5. (转)《深入理解java虚拟机》学习笔记10——并发编程(二)

    Java的并发编程是依赖虚拟机内存模型的三个特性实现的: (1).原子性(Atomicity): 原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的. ...

  6. 并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理

    在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并 ...

  7. 《C++ Primer Plus》学习笔记10

    <C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<&l ...

  8. 孙鑫VC学习笔记:多线程编程

    孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modified ...

  9. Hadoop学习笔记(7) ——高级编程

    Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...

随机推荐

  1. 设计模式值六大原则——接口隔离原则 (ISP)

    接口隔离原则 Interface Segregation Principle    定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立 ...

  2. Cobbler自动化部署

    一:PXE.Kickstart与Cobbler的概念: PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的技术,需要网卡的硬件支持,工作于C/S的 ...

  3. 在QuartusII 中使用tcl对工程进行复制——半自动

    最近在看coyoo的博客,加上手上有一本coyoo老师的书籍.本人是脚本小白,怎么看都没有看懂这个自动化是怎么实现的. 先说我的半自动化,后面在说我对自动化的一点疑惑—— 目前没有实现 目录环境: 首 ...

  4. 第一节 UPC 码

    UPC码(Universal Product Code)是最早大规模应用的条码,其特性是一种长度固定.连续性的条码,目前主要在美国和加拿大使用,由於其应用范围广泛,故又被称万用条码. UPC码仅可用来 ...

  5. QProcess与外部程序的调用(可以通过设置管道来交互)

    项目做到一定阶段,经常需要在原来的工程上调用外部程序.Qt为此提供了QProcess类,QProcess可用于完成启动外部程序,并与之交互通信. 一.启动外部程序的两种方式:(1)一体式:void Q ...

  6. FLASH ROM与EEPROM的区别

    EEPROM,虽然也叫“非易失性数据存储器”,但它不能直接参与ALU运算,只是用于掉电不丢失的数据存储. EEPROM和片内RAM 类似,也属于数据存储器,它的特点是数据掉电可保持,而程序存储器一般指 ...

  7. 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4版本(截至目前为止最新稳定版) ,PC开发环境Windows7,C++开发环境VS2010 提到“导演”一词,想必读者最先联想到的是电影.作为娱乐产 ...

  8. Spout的实现步骤

    Spout的实现步骤: ·        对文件的改变进行分开的监听,并监视文件夹下有无新日志文件加入. ·        在数据得到了字段的说明后,将其转换成tuple. ·        声明Sp ...

  9. dhtmlx之dhtmlXGrid显示数据 --大数据

    引用 <link href="../../dhtmlXGridScripts/dhtmlxgrid.css" rel="stylesheet" type= ...

  10. 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【装载】

    初次接触CAShapeLayer和贝塞尔曲线,看了下极客学院的视频.对初学者来说感觉还不错.今天来说一个通过CAShapeLayer和贝塞尔曲线搭配的方法,创建的简单的圆形进度条的教程先简单的介绍下C ...