C#网络编程代码框架

网络编程基本流程:

      1:Socket概念及原型函数

      原义是“孔”或“插座”。作为BSD UNIX的进程通信机制。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

函数原型:
int socket(int  domain, int  type, int  protocol);
参数说明:
domain:协议域,又称协议族(family)。常用的协议族有AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域Socket)、AF_ROUTE等。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。
type:指定Socket类型。常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等。流式Socket(SOCK_STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用。数据报式Socket(SOCK_DGRAM)是一种无连接的Socket,对应于无连接的 UDP服务应用。
protocol:指定协议。常用协议有IPPROTO_TCP、IPPROTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。
注意:type和protocol不可以随意组合,如SOCK_STREAM不可以跟IPPROTO_UDP组合。当第三个参数为0时,会自动选择第二个参数类型对应的默认协议。
返回值:
如果调用成功就返回新创建的 套接字的描述符,如果失败就返回INVALID_SOCKET(Linux下失败返回-1)。 套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个 套接字描述符表,该表中存放着套接字描述符和套接字 数据结构的对应关系。该表中有一个字段存放新创建的 套接字的描述符,另一个字段存放套接字 数据结构地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个 套接字描述符表但是套接字数据结构都是在 操作系统内核缓冲里。


2:BIND(绑定)
函数原型:
int bind(SOCKET  socket, const struct sockaddr*  address, socklen_t  address_len);
参数说明:
socket :是一个 套接字描述符
address:是一个sockaddr结构指针,该结构中包含了要结合 本机的地址和端口号。
address_len:确定address 缓冲区的长度。
返回值:
如果函数执行成功,返回值为0,否则为SOCKET_ERROR。

3:整个客户端和服务器端交互图

4:Accept方法

 



        


       5:C#中一个简单的实例


                

           服务器端:






【1】:linux编程大全    地址:http://oss.org.cn/ossdocs/gnu/linux/

【2】:百度百科、

【3】:C#网络编程,作者:马俊





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值