网络程序设计实验代码.docx

上传人:b****8 文档编号:10037485 上传时间:2023-02-08 格式:DOCX 页数:40 大小:20.98KB
下载 相关 举报
网络程序设计实验代码.docx_第1页
第1页 / 共40页
网络程序设计实验代码.docx_第2页
第2页 / 共40页
网络程序设计实验代码.docx_第3页
第3页 / 共40页
网络程序设计实验代码.docx_第4页
第4页 / 共40页
网络程序设计实验代码.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

网络程序设计实验代码.docx

《网络程序设计实验代码.docx》由会员分享,可在线阅读,更多相关《网络程序设计实验代码.docx(40页珍藏版)》请在冰豆网上搜索。

网络程序设计实验代码.docx

网络程序设计实验代码

实验一:

UDP传输

Server端:

#pragmacomment(lib,"ws2_32.lib")

#include

#include

#defineMAX_BUF65536

intmain()

{

WSADatawsaData;

interr=WSAStartup(WINSOCK_VERSION,&wsaData);

if(0!

=err)

{

return-1;

}

/*socket()*/

SOCKETsock;

sock=socket(AF_INET,SOCK_DGRAM,0);

if(INVALID_SOCKET==sock)//出错处理

{

printf("scokt()Failed:

%d\n",WSAGetLastError());

WSACleanup();

return-1;

}

sockaddr_inLocalAddr;//定义变量

LocalAddr.sin_family=AF_INET;//指定网络类型

LocalAddr.sin_port=htons(20000);//绑定到20000端口,以后接收对端口发送到该端口上的数据

LocalAddr.sin_addr.s_addr=inet_addr("172.17.195.171");

err=bind(sock,(sockaddr*)&LocalAddr,sizeof(LocalAddr));

if(SOCKET_ERROR==err)

{

printf("bind()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

charrbuf[MAX_BUF];

memset(rbuf,0,MAX_BUF);

sockaddr_inRemoteAddr;//定义变量

intRemoteLen=sizeof(RemoteAddr);

intrByte=recvfrom(sock,rbuf,MAX_BUF,0,(sockaddr*)&RemoteAddr,&RemoteLen);

if(SOCKET_ERROR==rByte)

{

printf("recvfrom()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

printf("UDPrecv[%d]DATAfrom%s%s\n",rByte,inet_ntoa(RemoteAddr.sin_addr),rbuf);

//sockaddr_inRemoteAddr;

intsByte=sendto(sock,rbuf,strlen(rbuf),0,(sockaddr*)&RemoteAddr,sizeof(RemoteAddr));

if(SOCKET_ERROR==sByte)

{

printf("sendto()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

WSACleanup();

return0;

}

Client端:

#pragmacomment(lib,"ws2_32.lib")

#include

#include

#defineMAX_BUF65536

intmain()

{

WSADatawsaData;

interr=WSAStartup(WINSOCK_VERSION,&wsaData);

if(0!

=err)

{

return-1;

}

SOCKETsock;

sock=socket(AF_INET,SOCK_DGRAM,0);

if(INVALID_SOCKET==sock)//出错处理

{

printf("scokt()Failed:

%d\n",WSAGetLastError());

WSACleanup();

return-1;

}

printf("请输入信息!

");

chardata[20];

scanf("%s",data);

chardest_ip[]="172.17.195.171";

unsignedshortdest_port=20000;

sockaddr_inRemoteAddr;

RemoteAddr.sin_family=AF_INET;

RemoteAddr.sin_port=htons(dest_port);

RemoteAddr.sin_addr.s_addr=inet_addr(dest_ip);

intsByte=sendto(sock,data,strlen(data),0,(sockaddr*)&RemoteAddr,sizeof(RemoteAddr));

if(SOCKET_ERROR==sByte)

{

printf("sendto()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

charrbuf[MAX_BUF];

memset(rbuf,0,MAX_BUF);

//sockaddr_inRemoteAddr;//定义变量

intRemoteLen=sizeof(RemoteAddr);

intrByte=recvfrom(sock,rbuf,MAX_BUF,0,(sockaddr*)&RemoteAddr,&RemoteLen);

if(SOCKET_ERROR==rByte)

{

printf("recvfrom()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

printf("UDPrecv[%d]DATAfrom%s%s\n",rByte,inet_ntoa(RemoteAddr.sin_addr),rbuf);

WSACleanup();

return0;

}

实验二:

UDP文件传输

Server端:

#pragmacomment(lib,"ws2_32.lib")

#include

#include

#defineMAX_BUF65536

intmain()

{

WSADatawsaData;

interr=WSAStartup(WINSOCK_VERSION,&wsaData);

if(0!

=err)

{

return-1;

}

//socket()

SOCKETsock;

sock=socket(AF_INET,SOCK_DGRAM,0);

if(INVALID_SOCKET==sock)//出错处理

{

printf("scokt()Failed:

%d\n",WSAGetLastError());

WSACleanup();

return-1;

}

//绑定bind()

sockaddr_inLocalAddr;//定义变量

LocalAddr.sin_family=AF_INET;//指定网络类型

LocalAddr.sin_port=htons(20000);//绑定到20000端口,以后接收对端口发送到该端口上的数据

LocalAddr.sin_addr.s_addr=inet_addr("172.17.195.171");

err=bind(sock,(sockaddr*)&LocalAddr,sizeof(LocalAddr));

if(SOCKET_ERROR==err)

{

printf("bind()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

//接收

charrbuf[MAX_BUF];

memset(rbuf,0,MAX_BUF);

sockaddr_inRemoteAddr;//定义变量

intRemoteLen=sizeof(RemoteAddr);

intrByte=recvfrom(sock,rbuf,MAX_BUF,0,(sockaddr*)&RemoteAddr,&RemoteLen);

if(SOCKET_ERROR==rByte)

{

printf("recvfrom()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

printf("UDPrecv[%d]DATAfrom%s%s\n",rByte,inet_ntoa(RemoteAddr.sin_addr),rbuf);

printf("发送%s文件给%s\n",rbuf,inet_ntoa(RemoteAddr.sin_addr));

//file()

FILE*fp;

if((fp=fopen("e:

\\唐爱华\\hello.txt","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

exit(0);

}

while(!

feof(fp))

{

memset(rbuf,0,MAX_BUF);

fread(&rbuf,sizeof(rbuf),1,fp);

//发送

intsByte=sendto(sock,rbuf,strlen(rbuf),0,(sockaddr*)&RemoteAddr,sizeof(RemoteAddr));

if(SOCKET_ERROR==sByte)

{

printf("sendto()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

}

fclose(fp);

closesocket(sock);

WSACleanup();

return0;

}

client端:

#pragmacomment(lib,"ws2_32.lib")

#include

#include

#defineMAX_BUF65536

intmain()

{

WSADatawsaData;

interr=WSAStartup(WINSOCK_VERSION,&wsaData);

if(0!

=err)

{

return-1;

}

SOCKETsock;

sock=socket(AF_INET,SOCK_DGRAM,0);

if(INVALID_SOCKET==sock)//出错处理

{

printf("scokt()Failed:

%d\n",WSAGetLastError());

WSACleanup();

return-1;

}

chardata[]=”hello”;

chardest_ip[]="172.17.195.171";

unsignedshortdest_port=20000;

sockaddr_inRemoteAddr;

RemoteAddr.sin_family=AF_INET;

RemoteAddr.sin_port=htons(dest_port);

RemoteAddr.sin_addr.s_addr=inet_addr(dest_ip);

intsByte=sendto(sock,data,strlen(data),0,(sockaddr*)&RemoteAddr,sizeof(RemoteAddr));

if(SOCKET_ERROR==sByte)

{

printf("sendto()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

charrbuf[MAX_BUF];

memset(rbuf,0,MAX_BUF);

intRemoteLen=sizeof(RemoteAddr);

FILE*fp;

if((fp=fopen("e:

\\唐爱华\\client.txt","w"))==NULL)

{

printf("Cannotopenthefile!

\n");

exit(0);

}

while(!

feof(fp))

{

intrByte=recvfrom(sock,rbuf,MAX_BUF,0,(sockaddr*)&RemoteAddr,&RemoteLen);

if(SOCKET_ERROR==rByte)

{

printf("recvfrom()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

//printf("UDPrecv[%d]DATAfrom%s%s\n",rByte,inet_ntoa(RemoteAddr.sin_addr),rbuf);

fwrite(&rbuf,sizeof(rbuf),1,fp);

}

fclose(fp);

closesocket(sock);

WSACleanup();

return0;

}

实验三:

TCP文件传输

Server端:

#pragmacomment(lib,"ws2_32.lib")

#include

#include

#include//formemset()

intmain()

{

WSADatawsaData;

interr=WSAStartup(WINSOCK_VERSION,&wsaData);

if(0!

=err)

{

return-1;

}

//socket()

SOCKETsock;

sock=socket(AF_INET,SOCK_STREAM,0);

if(INVALID_SOCKET==sock)//出错处理

{

printf("scoket()Failed:

%d\n",WSAGetLastError());

WSACleanup();

return-1;

}

//绑定bind()

sockaddr_inLocalAddr;//定义变量

LocalAddr.sin_family=AF_INET;//指定网络类型

LocalAddr.sin_port=htons(20000);//绑定到20000端口

LocalAddr.sin_addr.s_addr=htonl(INADDR_ANY);

err=bind(sock,(sockaddr*)&LocalAddr,sizeof(LocalAddr));

if(SOCKET_ERROR==err)

{

printf("bind()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

err=listen(sock,5);

if(SOCKET_ERROR==err)

{

printf("listen()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

sockaddr_inClientAddr;

intAddrLen=sizeof(ClientAddr);

FILE*fp;

while

(1)

{

SOCKETsockConnected=accept(sock,(sockaddr*)&ClientAddr,&AddrLen);

if(INVALID_SOCKET==sockConnected)//出错处理

{

printf("accpet()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

charrbuf[1024];

while

(1)

{

memset(rbuf,0,1024);

intrByte=recv(sockConnected,rbuf,1024,0);

if(SOCKET_ERROR==rByte)

{

printf("recv()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

break;

}

if(0==rByte)//对方关闭连接

{

printf("Connectionisclosed.\n");

shutdown(sockConnected,SD_SEND);

closesocket(sockConnected);

break;

}

printf("TCPrecv[%d]DATA:

%s\n",rByte,rbuf);

//printf("Sendthefile'%s'to%s\n",rbuf,inet_ntoa(Dest_Addr.sin_addr));

if((fp=fopen("e:

\\唐爱华\\hello.txt","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

exit(0);

}

memset(rbuf,0,1024);

fread(&rbuf,sizeof(rbuf),1,fp);

intsByte=send(sockConnected,rbuf,sizeof(rbuf),0);

if(SOCKET_ERROR==sByte)

{

printf("send()Failed:

%d\n",WSAGetLastError());

closesocket(sockConnected);

break;

}

fclose(fp);

}

}

closesocket(sock);

WSACleanup();

return0;

}

Client端:

#pragmacomment(lib,"ws2_32.lib")

#include

#include

#include//forstrlen()

#include//formemset()

intmain()

{

WSADatawsaData;

interr=WSAStartup(WINSOCK_VERSION,&wsaData);

if(0!

=err)

{

return-1;

}

SOCKETsock;

sock=socket(AF_INET,SOCK_STREAM,0);

if(INVALID_SOCKET==sock)//出错处理

{

printf("scoket()Failed:

%d\n",WSAGetLastError());

WSACleanup();

return-1;

}

sockaddr_inServerAddr;

ServerAddr.sin_family=AF_INET;

ServerAddr.sin_port=htons(20000);

ServerAddr.sin_addr.s_addr=inet_addr("172.17.195.171");

err=connect(sock,(sockaddr*)&ServerAddr,sizeof(ServerAddr));

if(SOCKET_ERROR==err)

{

printf("connect()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

chardata[]="hello";

printf("向服务器发送想要下载的文件:

hello\n");

intsByte=send(sock,data,strlen(data),0);

if(SOCKET_ERROR==sByte)

{

printf("send()Failed:

%d\n",WSAGetLastError());

closesocket(sock);

WSACleanup();

return-1;

}

shutdown(sock,SD_SEND);//closeconnect

FILE*fp;

fp=fopen("e:

\\唐爱华\\client.txt","w");

if(fp==NULL)

{

printf("Cannotopenthefile!

\n");

exit(0);

}

charrbuf[1024];

while

(1)

{

memset(rbuf,0,1024);

intrByte=recv(sock,rbuf,1024,0);

fwrite(&rbuf,sizeof(rbuf),1,fp);

if(SOCKET_ERROR==rByte)

{

printf("recv()Failed:

%d\n",WSAGetLas

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1