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、关闭套接字
时间: 2024-10-06 19:32:13

C#进行Socket通信编程之一的相关文章

PHP Socket通信编程

Socket用于进程间通信.进程间通信通常基于客户端-服务端模型.此时,客户端-服务端是可以彼此交互的应用程序.客户端和服务端之间的交互需要连接.Socket编程负责的就是为应用程序之间建立可进行交互的连接. 用PHP创建一个简单的客户端-服务端,开发一个客户端用于发送string消息到服务端,服务端将相同的信息反转后返回给客户端. 服务器端 列表内容设置主机和端口 端口号可以是1024 -65535之间的任何正整数. $host = "127.0.0.1"; $port=5353;

linux系统socket通信编程2

一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种. UDP:用户数据报协议.UDP是一种无连接协议.UDP套接口是数据报套接口(datagram socket)的一种. 二.TCP和UDP介绍 1)基本TCP客户-服务器程序设计基本框架 说明:(三路握手)        1.客户端发

linux系统socket通信编程实践

简单介绍并实现了基于UDP(TCP)的windows(UNIX下流程基本一致)下的服务端和客户端的程序,本文继续探讨关于UDP编程的一些细节. 下图是一个简单的UDP客户/服务器模型: .imageplus-append-lu-img-txt { overflow: hidden; margin: 10px 0 } .imageplus-append-nova-txt { border: 1px solid #f2f2f2; font-family: Microsoft YaHei; line-

linux系统UDP的socket通信编程3

我刚开始接触linux下的socket编程,边抄边理解udp socket编程,我的疑问是server不指定IP地址,client的目标IP地址是127.0.0.1,这样就可以通信吗?在同一主机下是不是不能测试?如果server默认绑定本机的IP 地址,那么开启server后,在浏览器中输入127.0.0.1:(相应端口) 也可以得到数据?我的程序如下,没有跑起来,其实我觉得我不会测试,不知道本质所以会有细节漏掉.(使用的系统是ubuntu 11.10 ,编译器GCC ,分别在同一主机下的两个终

linux系统socket通信编程详解函数

linux socket编程之TCP与UDP TCP与UDP区别 TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端. UDP---用户数据报协议,是一个简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地.由于UDP在传输数据报前不用在客户和服

linux系统socket通信编程1

Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列. TCP Socket 基于TCP协议的客户端/服务器程序的一般流程一般如下: 它基本上可以分为三个部分: 一.建立连接: 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听

linux系统UDP的socket通信编程2

UDP套接字编程范例: server端代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 /************************

linux系统UDP的socket通信编程

发送方: /* * File: main.c * Author: tianshuai * * Created on 2011年11月29日, 下午10:34 * * 主要实现:发送20个文本消息,然后再发送一个终止消息 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #incl

Socket通信编程实例

客户端: package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(