当前位置:文档之家› 实验七简单的服务器客户端程序实验报告

实验七简单的服务器客户端程序实验报告

实验七简单的服务器客户端程序实验报告
实验七简单的服务器客户端程序实验报告

洛阳理工学院实验报告

101/

10/2.

实验内容:

端代码:Sever定义控制台应用程序的入口点。://server.cpp

#include#include#include#include

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

#include#include#include#include

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端界面:发送信息

相关主题
文本预览
相关文档 最新文档