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

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

socket编程实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/1 6:33:31

int sockfd,pktlen; char buf[300],buf1[300]; struct sockaddr_in server,client;

sockfd=socket(AF_INET,SOCK_DGRAM,0); 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地址

bind(sockfd,(struct sockaddr *)&server,sizeof(struct sockaddr_in)); for (;;) {

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

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

sendto (sockfd, buf1,sizeof(buf1), 0,(struct sockaddr_in*)&client,l); }

close(sockfd); }

Client端源码: //udpClient: #include #include #include #include #include

#include #include #include #include #define MAX_SIZE 1024 #define PORT 7000 #define HOST_ADDR \ int main(int argc,char **argv) { int sockfd,buflen; char buf1[300],buf2[300]; struct sockaddr_in server;

sockfd=socket(AF_INET,SOCK_DGRAM,0); server.sin_family=AF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = inet_addr (HOST_ADDR); for(;;) { printf (\ gets (buf1);//从stdin流中读取字符串,直至接受到换行符 buflen = strlen (buf1); if (buflen == 0) break;

sendto(sockfd, buf1, buflen + 1, 0,(struct sockaddr *)&server,sizeof(server));

recv(sockfd, buf2, sizeof (buf2), 0); printf(\ } close(sockfd); return 0; }

【UDP方案2】

Linux server端源码同方案1 Windows client端源码: //客户端

#include #include

#define INVALID_VALUE32 0xFFFF #pragma comment(lib, \

//客户端主函数开始 void main() { int err = INVALID_VALUE32; WORD ver; WSADATA wsaData; //定义版本号 ver = MAKEWORD(2, 2); /* 版本号为2.2版本,1.1也可以 */

/* 接下来初始化 */ err = WSAStartup(ver, &wsaData); if (err != 0) /* 检查socket是否初始化成功 */ { return; } if (2 != (LOBYTE(wsaData.wVersion)) || (2 != HIBYTE(wsaData.wVersion))) { WSACleanup(); /* 版本错误则清楚导入的DLL */ return; } /* 开始socket的主体部分:创建socket */

SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0); /* AF_INET表示网络使用的范围internetwork: UDP, TCP, etc, SOCK_STREAM表示使用的是TCP SOCK_DGRAM 表示使用的是UDP类型 */ SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr(\// 这里设置为服务器的IP地址,由于我在自己的机器上面写的,所以写回环地址了 addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(7000); /* 端口随便只要不跟系统冲突就行 */ /* 定义几个缓冲区,也是接受和发送的,设置成100即可 */ char recvbuf[100]; char sendbuf[100];

int len=sizeof(SOCKADDR); /* 下面进入死循环 */ while (1) { printf(\ gets(sendbuf); sendto(sockClient, sendbuf, strlen(sendbuf)+1, 0, (SOCKADDR *)&addrSrv, len); int recvnum = recvfrom(sockClient, recvbuf, 100, 0, (SOCKADDR *)&addrSrv, &len); recvbuf[recvnum] = 0; /* 将接收到的数据存入数据缓冲区,以便显示 */ printf(\ recvbuf); } /* 最后将socket清空 */ closesocket(sockClient); WSACleanup(); return; }

【TCP】

Server端源码: #include #include #include #include #include

#define PORT 7000

main () {

struct sockaddr_in client, server;// 客户端地址信息 本机地址信息

int s, ns, namelen, pktlen;//s:监听socket ns:数据传输socket namelen:client的地址长度 pktlen:传送数据的字节数 char buf[400]; char buf3[200];

s=socket(AF_INET, SOCK_STREAM, 0); //创建连接的SOCKET,s为socket描述符

// 初始化服务器地址

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

共分享92篇相关文档

文档简介:

int sockfd,pktlen; char buf[300],buf1[300]; struct sockaddr_in server,client; sockfd=socket(AF_INET,SOCK_DGRAM,0); 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地址 bind(sockfd,(struct sockaddr *)&server,sizeo

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价: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