- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
tcp套接口通信实验
实验二:tcp套接口通信实验
一、 实验目的
学会使用标准的POSIX套接口标准函数,满足客户端和服务器的通信需求。
建立tcp套接口
接收与发送tcp数据包
解析与处理tcp数据包
二、 预备知识
熟悉tcp套接口函数使用方法
三、 实验预计时间
30分钟左右
实验步骤:
根据《unix网络编程》书中的实例或者网上搜得的例子作为参考,编写.c和.h文件。分别编写服务器和客户端两端的代码,其中,由于是在一台机器上开发,因此客户端的代码访问服务器的地址定为127.0.0.1即可。
看懂例子makefile。
编译、运行
实验源代码及结果
服务端程序TCPServer.c
#include stdio.h
#include stdlib.h
#include errno.h
#include string.h
#include sys/types.h
#include netinet/in.h
#include sys/socket.h
#include sys/wait.h
int main(int argc, char ** argv)
{
int sockfd,new_fd; /* 监听socket: sock_fd,数据传输socket: new_fd */
struct sockaddr_in my_addr; /* 本机地址信息 */
struct sockaddr_in their_addr; /* 客户地址信息 */
unsigned int sin_size, myport, lisnum;
if(argv[1]) myport = atoi(argv[1]);
else myport = 6000;
if(argv[2]) lisnum = atoi(argv[2]);
else lisnum = 2;
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
perror(socket);
exit(1);
}
my_addr.sin_family=PF_INET;
my_addr.sin_port=htons(myport);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero((my_addr.sin_zero), 0);
if (bind(sockfd, (struct sockaddr *)my_addr, sizeof(struct sockaddr)) == -1) {
perror(bind);
exit(1);
}
if (listen(sockfd, lisnum) == -1) {
perror(listen);
exit(1);
}
while(1) {
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr *)their_addr, sin_size)) == -1) {
perror(accept);
continue;
}
printf(server: got connection from %s\n,inet_ntoa(their_addr.sin_addr));
if (!fork()) { /* 子进程代码段 */
if (send(new_fd, Hello, world!\n, 14, 0) == -1) {
perror(send);
close(new_fd);
exit(0);
}
}
close(new_fd); /*父进程不再需要该socket*/
waitpid(-1,NULL,WNOHANG);/*等待子进程结束,清除子进程所占用资源*/
}
}
客户端程序TcpClient.c
#include stdio.h
#include stdlib.h
#include errno.h
#include string.h
#include netdb.h
#include sys/ty
您可能关注的文档
- UBNT简明教程.pptx
- LED节能灯改造方案.doc
- 公费医疗单位政策培训.ppt
- 自然资源管理开发(第八讲)-自然资源配置.ppt
- led节能灯的价格 2016led节能灯十大品牌.docx
- Adams课件连杆机构.ppt
- G2S软交换产品介绍.ppt
- 人教版四年级数学上单价、总价的数量关系课件.ppt
- 2014年秋季人教版四年级上册价格问题课件.ppt
- 如何提高客单价1.pptx
- 【新教材精创】 余弦定理、正弦定理(第1课时)余弦定理 课件(2)-人教A版高中数学必修第二册.pptx
- 【新教材精创】 总体离散程度的估计 课件(2)-人教A版高中数学必修第二册.pptx
- 【新教材精创】第七章 复数章末总结 课件(2)-人教A版高中数学必修第二册.pptx
- 【新教材精创】用空间向量研究直线、平面的位置关系(1)课件-人教A版高中数学选择性必修第一册.pptx
- 【新教材精创】 向量的减法运算 课件(1)-人教A版高中数学必修第二册.pptx
- 【新教材精创】 余弦定理、正弦定理(第2课时)正弦定理 课件(1)-人教A版高中数学必修第二册.pptx
- 【新教材精创】 余弦定理、正弦定理(第2课时)正弦定理 课件(2)-人教A版高中数学必修第二册.pptx
- 【新教材精创】 直线与直线垂直 课件(1)-人教A版高中数学必修第二册.pptx
- 【新教材精创】 向量的数乘运算 课件(1)-人教A版高中数学必修第二册.pptx
- 【新教材精创】 椭圆的简单几何性质(1) 课件-人教A版高中数学选择性必修第一册.pptx
文档评论(0)