2.4.1 无连接的套接字编程的两种模式_网络编程实用教程(第2版)_[共2页]
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.4.1 无连接的套接字编程的两种模式
使用数据报套接字开发网络应用程序,既可以采用对等模式,也可以采用 C/S 模式。 1.对等模式 对等模式的无连接套接字编程具有以下特点。 (1)应用程序双方是对等的。双方在使用数据报套接字实现网络通信时,都要经过 4 个阶 段,即创建套接字;绑定安装套接字;发送/接收数据,进行网络信息交换;关闭套接字。从图 2-9 可以看到,双方使用的系统调用都是对称的。 (2)双方都必须确切地知道对方的网络地址,并在各自的进程中,将约定好的自己的网络地 址绑定到自己的套接字上。 (3)在每一次发送或者接收数据报时,所用的 sendto 和 recvfrom 系统调用中,都必须包括双 方的网络地址信息。
50
If ((pid = FORK()) = = 0) {
/* 显示客户机端的网络地址 */
printf("Client Addr: %s%d\n",inet_ntoa(csockaddr.sisin_ port));
/* 读取客户机端发送来的数据,再将它们返回到客户机端 */
exit(3);
}
/* 通信完毕,关闭与这个客户机连接的套接字 */
printf("clent %s closed!\n", inet_ntoa(csockaddr.sin_addr));
close(clientfd);
exit(1);
} else if (pid < 0) printf("fork failed!\n");
close(clientfd);
}
close(listenfd);
/* 关闭监听套接字 */
}
2.4 无连接的套接字编程
无连接的套接字编程,使用数据报套接字,在 Internet 通信域中,基于传输层的 UDP, 不 需 要 建 立 和 释 放 连 接 ,数 据 报 独 立 传 输 ,每 个 数 据 报 都 必 须 包 含 发 送 方 和 接 收 方 完 整 的 网 络地址。
网络编程实用教程(第 2 版)
/* 服务器进入循环,接受并处理来自不同客户机端的连接请求 */
while (1) {
clientfd = accept(listenfd,(sockaddr*)(&csockaddr),&addrlen);
/* accept 调用返回时,表明有客户机端请求连接,创建子进程处理连接*/
while ((n = read(clientfd,buffer,1024)) > 0) {
buffer[n] = 0;
printf("Client Send: %s",buffer);
write( clientfd,buffer,n);
}
if (n < 0) {
fprintf( stderr, "read error!\n");
使用数据报套接字开发网络应用程序,既可以采用对等模式,也可以采用 C/S 模式。 1.对等模式 对等模式的无连接套接字编程具有以下特点。 (1)应用程序双方是对等的。双方在使用数据报套接字实现网络通信时,都要经过 4 个阶 段,即创建套接字;绑定安装套接字;发送/接收数据,进行网络信息交换;关闭套接字。从图 2-9 可以看到,双方使用的系统调用都是对称的。 (2)双方都必须确切地知道对方的网络地址,并在各自的进程中,将约定好的自己的网络地 址绑定到自己的套接字上。 (3)在每一次发送或者接收数据报时,所用的 sendto 和 recvfrom 系统调用中,都必须包括双 方的网络地址信息。
50
If ((pid = FORK()) = = 0) {
/* 显示客户机端的网络地址 */
printf("Client Addr: %s%d\n",inet_ntoa(csockaddr.sisin_ port));
/* 读取客户机端发送来的数据,再将它们返回到客户机端 */
exit(3);
}
/* 通信完毕,关闭与这个客户机连接的套接字 */
printf("clent %s closed!\n", inet_ntoa(csockaddr.sin_addr));
close(clientfd);
exit(1);
} else if (pid < 0) printf("fork failed!\n");
close(clientfd);
}
close(listenfd);
/* 关闭监听套接字 */
}
2.4 无连接的套接字编程
无连接的套接字编程,使用数据报套接字,在 Internet 通信域中,基于传输层的 UDP, 不 需 要 建 立 和 释 放 连 接 ,数 据 报 独 立 传 输 ,每 个 数 据 报 都 必 须 包 含 发 送 方 和 接 收 方 完 整 的 网 络地址。
网络编程实用教程(第 2 版)
/* 服务器进入循环,接受并处理来自不同客户机端的连接请求 */
while (1) {
clientfd = accept(listenfd,(sockaddr*)(&csockaddr),&addrlen);
/* accept 调用返回时,表明有客户机端请求连接,创建子进程处理连接*/
while ((n = read(clientfd,buffer,1024)) > 0) {
buffer[n] = 0;
printf("Client Send: %s",buffer);
write( clientfd,buffer,n);
}
if (n < 0) {
fprintf( stderr, "read error!\n");