C# socket编程

在看下面的代码之前,你必须对网间进程通信这一概念有大概的了解。网间进程通信,主要解决的是不同主机进程间的相互通信及多重协议的识别问题。同一主机上不同进程可用进程号唯一标识,但在网络环境下,各主机独立分配的进程号不能唯一标识该进程,例如,主机A中有1011号进程,在B机中也存在该号进程,操作系统支持的网络协议很多,不同协议的工作方式、地址格式也不相同。为了解决上述问题,TCP/IP协议引入了端口、地址、网络字节顺序等概念,这里并不做详细介绍。
在TCP/IP网络应用中,通信的两个进程间相互通信的主要模式是客户/服务器模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务,客户/服务器模式通信过程中采取的是主动请求方式,首先服务器方要先启动,并根据请求提供相应服务:
1>. 打开一通信通道并告知本地主机,它愿意在某一公认地址上接收客户请求。
2>. 等待客户请求到达该端口。
3>. 接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请 求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。
4>. 返回第二步,等待另一客户请求。
5>. 关闭服务器
客户方:
1>. 打开一通信通道,并连接到服务器所在主机的特定端口。
2>. 向服务器发服务请求报文,等待并接收应答;继续提出请求。
3>. 请求结束后关闭通信通道并终止。

TCP/IP的socket提供下列三种类型套接字,下面的例子只介绍到前两种类型:
1>:流式套接字(stream)
提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(ftp)即使用流式套接字。
2>:数据报式套接字(dgram)
提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。网络文件系统(NFS)使用数据报式套接字。
3>:原始式套接字(raw)
该接口允许对较低层协议,如IP、ICMP直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备.

 

1:TCP、UDP同步操作模式:
1>:如果当前使用的是面向连接的协议(如 TCP),则服务器可以使用 Listen 方法侦听连接。Accept 方法处理任何传入的连接请求,并返回可用于与远程主机进行数据通信的 Socket。可以使用此返回的 Socket 来调用 Send 或 Receive 方法。如果要指定本地 IP 地址和端口号,请在调用 Listen 方法之前先调用 Bind 方法。如果您希望基础服务提供程序为您分配可用端口,请使用端口号 0。如果希望连接到侦听主机,请调用 Connect 方法。若要进行数据通信,请调用 Send 或 Receive 方法。



2>:如果当前使用的是无连接协议(如 UDP),则根本不需要侦听连接。调用 ReceiveFrom 方法可接受任何传入的数据报。使用 SendTo 方法可将数据报发送到远程主机。

 

2:TCP、UDP异步操作模式:
1>:如果当前使用的是面向连接的协议(如 TCP),则可使用 Socket、BeginConnect 和 EndConnect 方法来连接侦听主机。通过使用 BeginSend 和 EndSend 方法,或者使用 BeginReceive 和 EndReceive 方法,可以进行异步数据通信。可以使用 BeginAccept 和 EndAccept 处理传入的连接请求。

2>:如果您使用的是 UDP 等无连接协议,则可以使用 BeginSendTo 和 EndSendTo 来发送数据报,而使用 BeginReceiveFrom 和 EndReceiveFrom 来接收数据报。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abeniaj0427

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值