洛阳理工学院实验报告
101/
10/2.
实验内容:
端代码:Sever定义控制台应用程序的入口点。://server.cpp
WS2_32)comment(lib,#pragma
sock1,sock2;SOCKET
;sin_size int
my_addr,their_addr;sockaddr_in struct
name[20];char
Tcp//初始化函数Init()void{
TCP\n\n\n);printf(\
\n\nServer:建立套接字//wMinver=0x0101;const WORD wsadata;WSADA TA if(0!=::WSAStartup(wMinver,&wsadata)) error!);socket perror(Start
ALID_SOCKET==(sock1=::socket(AF_INET,SOCK_STREAM,0)))if(INV error!);socketperror(Create
my_addr.sin_family=AF_INET;my_addr.sin_addr.S_un.S_addr=INADDR_ANY;my_addr.sin_port=htons(1000); sockaddr*)&my_addr,sizeof(my_addr)))if(SOCKET_ERROR==::bind(sock1,(struct{socket);stream perror(Binding
exit(1);}
开始侦听//if(SOCKET_ERROR==::listen(sock1,5)){socket);perror(Listening stream exit(1);10/3.
}接受连接//connect...\n\n\n);client.Please to serve牰湩晴尨Ready sockaddr_in);=sizeof(structsin_size
*)&their_addr,&sin_size))==-1)sockaddrif((sock2=accept(sock1,(struct{socket);streamperror(Accepting exit(1);} connet:%s,inet_ntoa(their_addr.sin_addr));new Accepting a牰湩晴尨}选择菜单//menu()int
{*s=(char*)malloc(2*sizeof(char));char
c;int
Menu\n\n\n);printf(\
\n\nServer:*********************************\n\n);牰湩晴尨*\n);Message牰湩晴尨*1.Send
*\n);2.ReceiveMessage牰湩晴尨**\n\n);*牰湩晴尨3.Exit*********************************\n);牰湩晴尨do {choice:);yourprintf(\
Enter gets(s);if(s[0]=='\0'){gets(s);}c=atoi(s);}while(c<0||c>3);free(s);c;return
}
消息发送函数//Send()void
{Msg[10240];char message:);the printf(\
PleaseInput
gets(Msg);Msg[10239]='\0';
10/4.
::send(sock2,Msg,strlen(Msg),0);
}
消息接收函数//Receive()void
{len;int
buf[10240];char i=0;i<10240;i++){for(int buf[i]='\0';}
if((len=::recv(sock2,buf,10240,0))==-1){error);perror(Receving data
exit(1);}Message:%s\n,buf);printf(The Received
}主函数//main()void
{Init();for(;;){switch(menu()){1:case Send();break;2:case
Receive();break;3:case exit(0);}}
//::closesocket(sock2);::closesocket(sock1);
10/5.
::WSACleanup();}
端代码:Client//定义控制台应用程序的入口点。://client.cpp
WS2_32)comment(lib,#pragma
sock1,sock2;SOCKET
;sin_size int
my_addr,their_addr;sockaddr_in struct
name[20];char
Tcp//初始化函数Init()void{TCP\n\n\n);printf(\
\n\nClient:建立套接字//wMinver=0x0101;const WORD wsadata;
WSADA TA if(0!=::WSAStartup(wMinver,&wsadata))
perror(Start socket error!);
if(INVALID_SOCKET==(sock1=::socket(AF_INET,SOCK_STREAM,0))) perror(Create socket error!);
my_addr.sin_family=AF_INET;
my_addr.sin_addr.S_un.S_addr=inet_addr(92.168.93.48);
my_addr.sin_port=htons(1000);
//请求连接
牰湩晴尨connecting...);
sin_size=sizeof(struct sockaddr_in);
if(sock2=(::connect(sock1,(LPSOCKADDR)&my_addr,sin_size))==-1)
{
perror(Accepting stream socket);
exit(1);
}
}
10/6.
//选择菜单
int menu()
{
char*s=(char*)malloc(2*sizeof(char));
int c;
printf(\
\n\n Client:
Menu\n\n\n);牰湩晴尨*********************************\n\n);*1.Send Message牰湩晴尨*\n);Message* 2.Receive牰湩晴尨
*\n);3.Exit*牰湩晴尨*\n\n);牰湩晴尨*********************************\n);do {choice:);your printf(\
Enter gets(s);if(s[0]=='\0'){gets(s);}c=atoi(s);}while(c<0||c>3);free(s);return c;}消息发送函数// void Send(){Msg[10240];char
message:);theInputprintf(\
Please
gets(Msg);Msg[10239]='\0';::send(sock1,Msg,strlen(Msg),0);
}//消息接收函数voidReceive(){
10/7.
int len;
char buf[10240];
for(int i=0;i<10240;i++){
buf[i]='\0';
}
if((len=::recv(sock1,buf,10240,0))==-1)
{
perror(Receving data error);
exit(1);
}
printf(The Received Message:%s\n,buf);
}
//主函数
void main()
{
Init();
for(;;)
{
switch(menu())
{
case1:
Send();
break;
case2:
Receive();
break;
case3:
exit(0);
}
}
::closesocket(sock2);
::closesocket(sock1);
::WSACleanup();
}
10/8.
实验结果
Server端界面:发送信息