云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > socket编程实验报告

socket编程实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/5/31 1:37:30

memset ((char *)&server, sizeof(server), 0); //将已开辟内存空间 server 的全部字节的值设为值0.类似于bzero

server.sin_family = AF_INET;

server.sin_port = htons(PORT);//端口号

server.sin_addr.s_addr = INADDR_ANY;//设置网络地址,INADDR_ANY表示机器的IP地址

//server需要在listen之前绑定一个大家都知道的地址,就是刚刚初始化好的ip+端口号 bind(s, (struct sockaddr *)&server, sizeof(server));

listen(s,1);//侦听客户端请求,i为socket可以排队链接的最大个数

/*接受client请求,s为server的描述符(即监听socket描述符),第二个参数即指针client的协议地址,第三个参数代表地址长度

返回值ns是一个全新的描述符,是数据传输socket,代表与返回客户的tcp连接*/ namelen = sizeof (client);

ns = accept (s, (struct sockaddr *)&client, &namelen); //开始进行网络I/O for (;;) {

/*recv接受client发送的数据,recv函数仅仅是copy数据,真正的接收数据是协议来完成的), 第一个参数指定接收端套接字描述符;第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度 recv函数返回其实际copy的字节数*/ pktlen = recv (ns, buf, sizeof (buf), 0); if (pktlen == 0) break;

printf (\printf (\gets(buf3);

/*并不是send把ns的发送缓冲中的数据传到连接的另一端的,而是协议传的,send仅仅是把buf中的数据copy到ns的发送缓冲区的剩余空间里 返回实际copy的字节数*/ send (ns, buf3,sizeof(buf3), 0); }

close(ns); close(s); }

client端源码: #include #include #include #include

#define PORT 7000

#define HOST_ADDR \

int main () {

struct sockaddr_in server; int s, ns;

int pktlen, buflen;

char buf1[256], buf2[256];

s=socket(AF_INET, SOCK_STREAM, 0);

server.sin_family = AF_INET; server.sin_port = htons(PORT);

server.sin_addr.s_addr = inet_addr (HOST_ADDR);

//connect第一个参数是client的socket描述符,第二个参数是server的socket地址,第三个为地址长度

if (connect(s, (struct sockaddr *)&server, sizeof(server)) < 0) {

perror(\return; }

//进行网络I/O for (;;) {

printf (\

gets (buf1);//从stdin流中读取字符串,直至接受到换行符 buflen = strlen (buf1); if (buflen == 0) break;

send(s, buf1, buflen + 1, 0); recv(s, buf2, sizeof (buf2), 0);

printf(\}

close(s); return 0; }

搜索更多关于: socket编程实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

memset ((char *)&server, sizeof(server), 0); //将已开辟内存空间 server 的全部字节的值设为值0.类似于bzero server.sin_family = AF_INET; server.sin_port = htons(PORT);//端口号 server.sin_addr.s_addr = INADDR_ANY;//设置网络地址,INADDR_ANY表示机器的IP地址 //server需要在listen之前绑定一个大家都知道的地址,就是刚刚初始化好的ip+端口号 bind(s, (struct sockaddr *)&server, sizeof(server)); listen(s,1);//侦听客户端请求,i为socket可以排队链接的最大个数

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com