- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统课程设计报告
学院名称: 电气学院
专业班级: 电科1102
学生姓名: 胡志文
学 号: 3110504039
Linux下的SOCKET通信实验
摘要: (1)掌握Linux SOCEKT编程的常用函数:
---编写服务器程序server
---编写客户端程序client
---编写聊天程序的服务器程序listener
---编写聊天程序的客户端程序talker
(2)下载调试上述程序
一.1.socket概念:所谓socket通常也称作套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求。以J2SDK-1.3为例,Socket和ServerSocket类库位于java .net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
3、程序代码及相关代码注释:
(1)客户端程序:
下面是一个简单的TCP客户端程序client.c,在这个程序中你必须提供一个命令行参数:服务端所在机器主机名。当然,服务端还必须在客户端运行以前就已经正常运行。
#include stdio.h
#include stdlib.h
#include unistd.h
#include errno.h
#include string.h
#include netdb.h
#include sys/types.h
#include netinet/in.h
#include sys/socket.h
#define PORT 3490 // 连接时使用的端口号
#define MAXDATASIZE 100 // 一次所能接收的最长字符数
int main(int argc, char *argv[]) {
int sockfd, numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in their_addr; // 客户端信息
if (argc != 2) {
fprintf(stderr,usage: client hostname\n);
exit(1);
}
if ((he=gethostbyname(argv[1]))== NULL) { // 域名解析
perror(gethostbyname);
exit(1);
}
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0))== -1) {
//创建套接字,返回文件描述符
perror(socket);
exit(1);
}
their_addr.sin_family = AF_INET; // 采用ipv4
their_addr.sin_port = htons(PORT); // 将主机号转换成网络号
their_addr.sin_addr = *((struct in_addr *)he-h_addr);
memset((their_addr.sin_zero), \0, 8); // 制作成字符串
if (connect(sockfd, (struct sockaddr *)their_addr, sizeof(struct sockaddr)) == -1) {
//请求连接
perror(connect);
exit(1);
}
if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {
//接收数据
perror(recv);
exit(1);
}
b
文档评论(0)