没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
一个基于 TCP 的阻塞模型的并发回显服务器-客户端程序
by windhawk
一、概述
网络编程普遍使用 socket 接口来实现网络间的进程通信,具体的 TCP/IP 细节被封装在
内核之中,由内核完成;用户只需要使用内核提供的 socket API 来实现通信即可。
Windows 网络编程继承了 Unix 的 socket 接口,基本模式同Unix 大同小异。但是由于两
个系统的实现不同,在具体实现网络程序时仍存在一些差异。包括一些socket API 的原
型,以及并发服务器的编写方法等。
二、Winsock 与 Unix Socket 比较
Socket API
WSAStartup() : 初 始 化
winsock 版本信息,加载动
态链接库
Socket():建立监听套接字
Unix
无
Windows
WSADATA wsaData;
Int WSAStartup(MAKEWORD(2,2),
&wsaData)
Int sockfd = socket(AF_INET, SOCKET sockfd = socket(AF_INET,
SOCK_STREAM, SOCK_STREAM, IPPROTO_TCP);
IPPROTO_TCP);
成功:u_long 句柄
成功:ul 标识符;败:-1 败:INVALID_SOCKET
Int bind(sockfd, (struct Int bind(sockfd, (struct sockaddr
sockaddr *)&myaddr, *)&myaddr, sizeof(myaddr));
sizeof(myaddr));
成功:0 失败:SOCKET_ERROR
成功:0 失败: -1
Int connect(sockfd, (struct
sockaddr *)&servaddr,
sizeof(servaddr));
成功:0 失败: -1
Int listen(sockfd, int n);
成功: 0 失败:-1
Int connfd = accept(sockfd,
(struct sockaddr *)&cliaddr,
socket_t *len);
成功:connfd 失败:-1
Close(sockfd);
Close(connfd);
无
Int connect(sockfd, (struct sockaddr
*)&servaddr, sizeof(servaddr));
成功:0 失败:SOCKET_ERROR
Int listen(sockfd, int n);
成功:0 失败:SOCKET_ERROR
SOCKET connfd = accept(sockfd,
(struct sockaddr *)&cliaddr, int
&sizeof(cliaddr));
成 功 : connfd 失 败 :
INVALID_SOCKET
Closesocket(sockfd);
Closesocket(connfd);
WSACleanup();
Int shutdown(connfd, SD_BOTH);
Int shutdown(connfd, SD_RECEIVE);
Int shutdown(connfd, SD_SEND);
成功:0 失败:SOCKET_ERROR
Bind():为 socket 绑定一个
地址
Connect():客户端主动发起
一个连接请求,即 SYN 包
listen():将套接字设置成监
听状态
Accept():等待连接请求,
返回已连接套接字
关闭套接字
Shutdown():用于禁止在指
定的套接字上发送和接受
数据
数据发送函数:
成功:返回实际发送的字节
Int write(connfd, sendbuff, Int ret = send(connfd, sendbuff,
strlen(buff)); strlen(buff), 0);
资源评论
G11176593
- 粉丝: 6649
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功