网络编程Word文档格式.docx

上传人:b****2 文档编号:15386276 上传时间:2022-10-29 格式:DOCX 页数:32 大小:19.98KB
下载 相关 举报
网络编程Word文档格式.docx_第1页
第1页 / 共32页
网络编程Word文档格式.docx_第2页
第2页 / 共32页
网络编程Word文档格式.docx_第3页
第3页 / 共32页
网络编程Word文档格式.docx_第4页
第4页 / 共32页
网络编程Word文档格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

网络编程Word文档格式.docx

《网络编程Word文档格式.docx》由会员分享,可在线阅读,更多相关《网络编程Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。

网络编程Word文档格式.docx

charbuf[MAXDATASIZE];

charrvbuf[MAXDATASIZE];

structhostent*he;

structsockaddr_inserver;

if(argc!

=2)

{

printf("

Usage:

%s<

IPaddress>

\n"

argv[0]);

exit(-1);

}

if((he=gethostbyname(argv[1]))==NULL){

perror("

gethostbynameerror."

);

exit

(1);

}

if((fd=socket(AF_INET,SOCK_STREAM,0))==-1){

Createsocketfailed."

bzero(&

server,sizeof(server));

server.sin_family=AF_INET;

server.sin_port=htons(PORT);

memcpy(&

server.sin_addr,he->

h_addr,sizeof(structin_addr));

if(connect(fd,(structsockaddr*)&

server,sizeof(structsockaddr))==-1)

connectfailed."

structsockaddr_inlocaladdr;

socklen_tlen=sizeof(localaddr);

getsockname(fd,(structsockaddr*)&

localaddr,&

len);

printf("

LocalipandLocalportis:

%s:

%d\n"

inet_ntoa(localaddr.sin_addr),localaddr.sin_port);

structsockaddr_inpeeraddr;

socklen_tlenp=sizeof(peeraddr);

getpeername(fd,(structsockaddr*)&

peeraddr,&

lenp);

PeeripandPeerportis:

inet_ntoa(peeraddr.sin_addr),peeraddr.sin_port);

close(fd);

}

服务器端程序如下:

sys/types.h>

arpa/inet.h>

#defineBACKLOG1

voidprocess_cli(intconnectfd,structsockaddr_inclient);

main(void)

intlistenfd,connectfd;

structsockaddr_inserver,client;

intsin_size;

if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1)

perror("

Createsocketfailed."

exit(-1);

intopt=SO_REUSEADDR;

setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&

opt,sizeof(opt));

server.sin_port=htons(PORT);

server.sin_addr.s_addr=htonl(INADDR_ANY);

if(bind(listenfd,(structsockaddr*)&

server,sizeof(structsockaddr))==

-1){

Binderror."

if(listen(listenfd,BACKLOG)==-1){

listenerror."

sin_size=sizeof(structsockaddr_in);

while

(1){

if((connectfd=accept(listenfd,(structsockaddr*)&

client,&

sin_size))==-1)

accepterror."

close(connectfd);

close(listenfd);

实验二服务器与单客户的连接处理

#defineMAXDATASIZE1000

intmain(intargc,char*argv[])

intfd,numbytes;

structhostent*he;

inti=1;

if(argc!

=2)

%s<

\n"

argv[0]);

if((he=gethostbyname(argv[1]))==NULL){

gethostbynameerror."

if((fd=socket(AF_INET,SOCK_STREAM,0))==-1){

Createsocketfailed"

exit

(1);

server.sin_family=AF_INET;

server.sin_addr=*((structin_addr*)he->

h_addr);

if(connect(fd,(structsockaddr*)&

server,sizeof(structsockaddr))==-1)

if((numbytes=recv(fd,buf,MAXDATASIZE,0))==-1)

recverror."

buf[numbytes]='

\0'

;

ServerMessage:

%s\n"

buf);

while(i){

Inputyourmessage(maxsizeis100):

"

scanf("

%s"

buf);

if(strlen(buf)<

1)i=0;

if((numbytes=send(fd,buf,strlen(buf),0))==-1)

Senderror."

readerror.\n"

}

Theconverseofyourmessageis:

\n"

);

#defineBACKLOG2

#defineMAXCHARSIZE1000

voidprocess_client(intconnectfd,structsockaddr_inclient);

intmain(void)

intlistenfd,connectfd;

structsockaddr_inserver,client;

pid_tpid;

if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1)

server.sin_addr.s_addr=htonl(INADDR_ANY);

if(bind(listenfd,(structsockaddr*)&

if(listen(listenfd,BACKLOG)==-1)

sin_size=sizeof(structsockaddr_in);

while

(1){

if((connectfd=accept(listenfd,(structsockaddr*)&

sin_size))==-1){

Accepterror.

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

当前位置:首页 > 医药卫生 > 基础医学

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

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