




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/ hello.c#include #include #include static int _init hello_init(void)printk(KERN_ALERT Hello World!n);return 0;static void _exit hello_exit(void) printk(KERN_ALERT Goodbye World!n);module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE(GPL); Dual BSD/GPL/*tcpserver.c*/1.#include2.#include3.#include4.#include5.#include6.#include7.#include8.# main(int argc,char *argv)10.11.int sockfd,new_fd;12.struct sockaddr_in server_addr;13.struct sockaddr_in client_addr;14.int sin_size,portnumber;15.const char hello=Hellon;16.if(argc!=2)17.18. fprintf(stderr,Usage:%s portnumberan,argv0);19. exit(1);20.21.if(portnumber=atoi(argv1)0)22.23. fprintf(stderr,Usage:%s portnumberan,argv0);24. exit(1);25. 26. /*服务器端开始建立socket描述符*/27.if(sockfd=socket(AF_INET,SOCK_STREAM,0)=1)28.29. fprintf(stderr,Socket error:%s portnumberan,strerror(errno);30. exit(1);31. 32. /*服务器端填充sockaddr结构*/33.bzero(&server_addr,sizeof(struct sockaddr_in);34.server_addr.sin_family=AF_INET;35.server_addr.sin_addr.s_addr=htonl(INADDR_ANY);36.server_addr.sin_port=htons(portnumber);37./*捆绑sockfd描述符*/if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct 38.sockaddr)=-1)39.40. fprintf(stderr,Bind error:%sna,strerror(errno);41. exit(1);42. 43./*监听sockfd描述符*/44.if(listen(sockfd,5)=-1)45.46. fprintf(stderr,Listen error:%sna,strerror(errno);47. exit(1);48.49.while(1)50.51. /*服务器阻塞,直到客户程序建立连接*/52.sin_size=sizeof(struct sockaddr_in);53.if(new_fd=accept(sockfd,(struct 54.sockaddr )(&client_addr),&sin_size)=-1)55.56. fprintf(stderr,Accept error: %sna,strerror(errno);57. exit(1);58. 59. fprintf(stderr,Server get connection from%sn, 60.inet_ntoa(client_addr.sin_addr);61. if(write(new_fd,hello,strlen(hello)=-1)62. 63. fprintf(stderr,Write Error:%sn,strerror(errno);64. exit(1);65. 66. /*这个通信已经结束*/67. close(new_fd);68. /*循环下一个*/69. 70. close(sockfd);71. exit(0); /*tcpclient.c1. #include2. #include3. #include4. #include5. #include6. #include7. #include8. #include9. int main(int argc,char *argv)10. 11. int sockfd;12. char buffer1024;13. struct sockaddr_in server_addr;14. struct hostent *host;15. int portnumber,nbytes;16. if(argc!=3)17. 18. fprintf(stderr,Usage:%s hostname portnumberan,argv0);19. exit(1);20. 21. if(host=gethostbyname(argv1)=NULL)22. server_addr.sin_family=AF_INET;23. server_addr.sin_port=htons(portnumber);24. server_addr.sin_addr=*(struct in_addr*)host-h_addr);25. /*客户程序发起连接请求*/26. if(connect(sockfd,(struct sockaddr*)(&server_addr), sizeof(struct sockaddr)=-1)27. 28. fprintf(stderr,Connect Error:%sna,strerror(errno);29. exit(1);30. 31. /*连接成功了*/32. if(nbytes=read(sockfd,buffer,1024)=-1)33. 34. fprintf(stderr,Read Error: %sna,strerror(errno); 35. exit(1);36. 37. buffernbytes=0;38. printf(I have received:%sn,buffer);39. /*结束通信*/40. close(sockfd);41. exit(0);42. rootJLUZH tcp#tcpserver 2000rootJLUZH tcp#tcpclient localhost 2000此时,在终端一会显示:“Server get connection from ”,表示tcpserver程序收到了从来的连接信息。在终端二会显示:“I have received:Hello”,表示tcpclient程序收到了从服务器端发送来的信息。/*udpserver.c*/#include #include #include #include #include #include #define MAXLINE 80#define SERV_PORT 8888void do_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen) int n; socklen_t len; char mesg80; for(;) len = clilen; n = recvfrom(sockfd, mesg, 80, 0, pcliaddr, &len); /* 等待接收数据 */ sendto(sockfd, mesg, n, 0, pcliaddr, len); /* 将接收到的数据发送回去 */ mesgn=0; fputs(mesg, stdout); /*main函数*/int main(void) int sockfd; struct sockaddr_in servaddr, cliaddr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* 创建socket */ bzero(&servaddr, sizeof(servaddr); /* 初始化servaddr */servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr=htonl(INADDR_ANY);/*定义为INADDR_ANY*/ servaddr.sin_port = htons(8888); if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr) = -1) /* 绑定IP地址和端口*/ perror(bind error); exit(1); do_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr); return 0;/*udpclient.c*/#include #include #include #include #include #include #include #include #define MAXLINE 80#define SERV_PORT 8888void do_cli(FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen) int n; char sendline80, recvline80 + 1; if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) = -1) /* 连接服务器 */ perror(connect error); exit(1); while(fgets(sendline, 80, fp) != NULL) write(sockfd, sendline, strlen(sendline);/*读一行并发送到服务器*/ n = read(sockfd, recvline, 80); /* 接收从服务器来的数据 */ if(n = -1) perror(read error); exit(1); recvlinen = 0; /* terminate string */ fputs(recvline, stdout); /*main函数*/int main(int argc, char *argv) int sockfd; struct sockaddr_in servaddr; if(argc != 2) /* 输入参数检查 */ printf(usage: udpclient n); exit(1); bzero(&servaddr, sizeof(servaddr); /*初始化servaddr */servaddr.sin_family = AF_INET;servaddr.sin_port = htons(8888);if(inet_pton(AF_INET, argv1, &servaddr.sin_addr) = 0)printf(%s is not a valid IPaddressn, argv1); exit(1); sockfd = sock
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年航空公司飞机维护员新员工岗位专业知识笔试题目及答案
- 生药学试题试卷及答案
- 高校采购合同模板(3篇)
- 高粱种子买卖合同书模板(3篇)
- 高空施工合同范本售后(3篇)
- 地坪施工与设备租赁综合合同
- 农用土地租赁与农业绿色生产模式合作框架协议
- 汽车制造企业生产线员工招聘与安全生产协议
- 民航气象专业面试题及答案
- 幼师专业考试题及答案
- 残值评估与定价模型-洞察阐释
- 意式轻奢软装设计
- 瑞幸咖啡公司员工管理制度
- 2025至2030年中国电动场地车行业竞争战略分析及市场需求预测报告
- 2025-2030年中国宠物服务行业市场深度调研及投资前景与投资策略研究报告
- 胖东来考勤管理制度
- 地质灾害风险评估与防治
- 物理实验安全培训
- 小区物业管家管理制度
- 第三届全国技能大赛竞赛-无人机驾驶(植保)选拔赛备考试题库(附答案)
- 危险性较大的分部分项工程专项施工方案严重缺陷清单(试行)2025解读
评论
0/150
提交评论