利用C#进行Socket通信编程之一

news/2024/5/17 17:27:35 标签: socket, c#, 服务器, 编程, tcp, 网络

    这段时间,开始接触服务器编程,因未做过这方面的相关工作,翻看了不少资料,又因本人相对较熟悉.NET(C#)编程,故采用了C#进行编写。在开始正式的服务器编程前,我是从Socket编程开始的。鄙人知道,关于Socket编程的相关资料(含实例)在网上多如牛毛,而我写这篇文章的初衷仅仅是为了记录自己的一些心得体会。
    Socket提供了这样一个接口,可以方便地使程序员通过其来发送和接收网络上的数据。在利用Socket编程的时候,首先需要使用指定的地址族(如常见的IPV4或IPV6)、套接字类型(如Stream、Dgram等)和协议(如Tcp、Udp等)初始化Socket类的新实例,然后需要与IP地址和端口绑定。这些都是使用Socket编程的最基本条件。
    Socket编程通常分服务器和客户端,服务器端负责接收客户端请求并处理该请求,必须具备多客户端处理能力,在性能要求、稳定性等方面要求较高,客户端在连接上服务器后向服务器发送数据或接收来自服务器的数据,之后进行处理,相对简单。
    在服务器端,以TCP通信为例,Socket实现网络通信的基本思路是:
    1、建立流式套接字并返回套接字号,如:m_serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    2、将套接字与本地地址相连,如:m_serverSocket.Bind(m_localEndPoint);
    3、开始侦听客户端连接请求
    4、等待客户端连接
    5、客户端与服务器建立连接,得到新的套接字,如clientSocket = m_serverSocket.Accept();
    6、在套接字上读写数据,直到完成数据交换
    7、与指定客户端的服务完成后,关闭该客户端的套接字
    8、关闭服务器,如m_serverSocket.Close();
    其中在服务器运行期间,第4到第7步是一个循环的过程,每一个客户端会话进来都走相同的处理模式。

    在客户端,也以TCP通信为例,Socket实现网络通信的基本思路是:
    1、建立流式套接字并返回套接字号,如:m_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    2、将套接字与远程主机(即服务器)进行连接,如:m_serverEndPoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);m_clientSocket.Connect(m_serverEndPoint);
    3、如果连接成功,则开始接收来自服务器端的数据,如:
if (m_clientSocket.Connected)
{
        m_clientSocket.BeginReceive(m_receiveBuffer, 0, m_receiveBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null);
}
    4、根据需要,向服务器发送数据,如:m_clientSocket.Send(m_sendBuffer, m_sendBuffer.Length, SocketFlags.None);
    5、关闭套接字

    在后期,随着本人编程的深入,将会与大家分享一些个人经验,敬请期待。


http://www.niftyadmin.cn/n/1863501.html

相关文章

尝试着去玩玩

整理一下思路,不知道能坚持多久!转载于:https://www.cnblogs.com/zhouyong/archive/2011/02/23/1961993.html

Cherry的【2019】年终总结

2019年,对我来说,是蜕变的一年。怎么说呢? 从我毕业之后,我一直从事的都是嵌入式开发工作,从最开始的助理工程师,绘制简单的电路,到嵌入式工程师,能独立的编写代码。在今年的春节时&…

NUCLEO-F413ZH开发板Coremark跑分测试

本文主要介绍了使用Keil MDK在NUCLEO-F413ZH开发板进行Coremark跑分测试的方法。参考了ST官方的应用实例《如何将CoreMark程序移植到STM32上》。 需要使用的工具 ■ NUCLEO-F413ZH开发板 ■ STM32CubeMX 4.20.0 ■ Keil MDK 5.2.3 更多详细内容请点击:http://ww…

office web applications 2010 安装在windows7中

Office web application 2010要求安装在server 系统上的,下面我们来将office web applications 2010 安装在windows7中 一、下载office web application 我们可以到官方网站上,下载office web applications 的bate版 并通过hotmail 获取key(不作重点介绍…

利用C#进行Socket通信编程之二:一个实例

利用晚上这点闲暇时间,写了一个Socket通信的小实例,该实例包含服务器端和客户端。其基本工作流程是:当服务器启动服务以后,客户端进行连接,如果连接成功,则用户可以在发送消息框中输入待发送的消息&#xf…

【产品】OEM、ODM、OBM是什么?

OEM,Original Equipment Manufacture,原始设备生产商 定义:按原单位(品牌单位)委托合同进行产品进行产品开发和制造,用原单位商标,由原单位销售或者经营的合作经营方式。 ODM,Ori…

一步步在LPCXpresso54608开发板上运行emWin库

一步步在LPCXpresso54608开发板上运行emWin库 本教程将介绍如何在LPCXpresso54608 TFT液晶屏上使用emWin库绘制文本和图像的一些基本知识。 所需工具: - > MCUXpresso IDE - > LPCXpresso54608 SDK 2.0.0 - > 用于MCUXpresso IDE的emWin库&#xff0c…

合格的程序员应该是怎样的?

从进入所在的公司至今,已经工作了大半年有余。在这半年当中,我一点一滴地积累、一步一个脚印地实践,顺利完成了公司产品升级模式的转变,从原有的纯手工操作迈向半自动化的模式(服务器端通过工程人员维护,客…