c语言socket实现主机与客户端异步通信Word下载.doc

上传人:wj 文档编号:1450068 上传时间:2023-04-30 格式:DOC 页数:6 大小:23.50KB
下载 相关 举报
c语言socket实现主机与客户端异步通信Word下载.doc_第1页
第1页 / 共6页
c语言socket实现主机与客户端异步通信Word下载.doc_第2页
第2页 / 共6页
c语言socket实现主机与客户端异步通信Word下载.doc_第3页
第3页 / 共6页
c语言socket实现主机与客户端异步通信Word下载.doc_第4页
第4页 / 共6页
c语言socket实现主机与客户端异步通信Word下载.doc_第5页
第5页 / 共6页
c语言socket实现主机与客户端异步通信Word下载.doc_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言socket实现主机与客户端异步通信Word下载.doc

《c语言socket实现主机与客户端异步通信Word下载.doc》由会员分享,可在线阅读,更多相关《c语言socket实现主机与客户端异步通信Word下载.doc(6页珍藏版)》请在冰点文库上搜索。

c语言socket实现主机与客户端异步通信Word下载.doc

WSAStartup(0x101,&

wsaData);

char*CloseClient="

bye"

;

char*CloseC_S="

byebye"

/*定义receive数据长度*/

intreceive;

intlen;

/*创建服务器*/

structsockaddr_inserveraddr;

/*创建客户端*/

structsockaddr_inaddrClient;

/*将serveraddr置零*/

memset((void*)&

serveraddr,0,sizeof(serveraddr));

/*定义家族协议*/

serveraddr.sin_family=AF_INET;

/*定义主机地址*/

serveraddr.sin_addr.s_addr=inet_addr(argv[1]);

//);

"

192.168.1.100"

/*定义主机端口*/

serveraddr.sin_port=htons(PORT);

server=socket(AF_INET,SOCK_STREAM,0);

/*返回值为-1,未启动windows的socket服务*/

if(server==-1)

{

perror("

socketerror!

);

}

/*绑定成功返回0*/

if(bind(server,(structsockaddr*)&

serveraddr,sizeof(serveraddr))==-1)

不能进行绑定!

exit

(1);

/*定义客户端嵌套字*/

SOCKETclient;

/*进入监听客户端连接和监听客户端发送的消息*/

while

(1)

/*定义并初始化接收数据的存储*/

charreceiveBuffer[MAXDATA]="

\n"

/*定义并初始化发送数据存储*/

charsendBuffer[MAXDATA]="

/*采用异步发送消息*/

boolsendFlag=false;

/*监听客户端*/

if(listen(server,20)==-1)

{

perror("

不能进行监听!

exit

(1);

}

/*接收到第一个用户后将其锁定,不在接收其他用户*/

if(flag)

len=sizeof(structsockaddr_in);

/*得到客户端的嵌套字*/

client=accept(server,(SOCKADDR*)&

addrClient,&

len);

if(client==-1)

{

perror("

accepterror"

continue;

}

printf("

新连接:

%s\n"

inet_ntoa(addrClient.sin_addr));

/*创建一个消息*/

char*msg="

Hello,ConnectedSuccessfully!

intlen=strlen(msg);

/*得到send的返回值,返回为发送消息的长度.若发送失败则返回-1*/

intsendLen=send(client,msg,len,0);

if(sendLen==-1)

消息发送失败!

closesocket(client);

msg=0;

/*接收到第一个客户端,将其锁定*/

flag=0;

/*得到接收到消息的长度*/

receive=recv(client,receiveBuffer,MAXDATA,0);

/*若消息长度为-1,则接收数据失败*/

if(receive==-1)

接收出错!

/*关闭客户端*/

closesocket(client);

printf("

%s\n"

receiveBuffer);

/*测试客户端发送的结束通话标志*/

if(strcmp(receiveBuffer,CloseClient)==0)

失去客户端:

flag=1;

elseif(strcmp(receiveBuffer,CloseC_S)==0)

closesocket(server);

else

Client%ssendmessage:

%s\n"

inet_ntoa(addrClient.sin_addr),receiveBuffer);

/*当接收到消息后,服务器才可以发送消息*/

sendFlag=true;

while(sendFlag)

YourMessage:

/*得到服务器输入的字符串*/

scanf("

%s"

sendBuffer);

sdMsgLen=strlen(sendBuffer);

/*得到服务器发送消息的长度*/

intsendLen=send(client,sendBuffer,sdMsgLen,0);

/*结束服务器发送消息模式,改为接收模式*/

sendFlag=false;

}

return0;

}

客户端代码编写

errno.h>

/*定义与主机连接的端口*/

/*定义最大传输数据量*/

/*由入口函数得到需要连接主机的IP地址*/

intmain(intars,char**arg)

/*开启windows的socket*/

/*定义服务器*/

/*将serveraddr清零*/

/*得到主机IP地址*/

serveraddr.sin_addr.s_addr=inet_addr(arg[1]);

//)"

/*得到端口*/

SOCKETs=socket(AF_INET,SOCK_STREAM,0);

/*

*建立TCP连接

*参数1:

socket返回的描述符

*参数2:

主机IP地址和端口号指针

*参数3:

远端地质借口长度

*/

if(connect(s,(structsockaddr*)&

连接错误!

/*进入监听服务器发送消息,采取异步通信*/

/*初始化接收和发送数据的存储*/

/*定发送模式*/

/*如果接收数据位-1则接收错误,正确是recv返回接收到数据的长度*/

if(recv(s,receiveBuffer,MAXDATA,0)==-1)

接收数据错误!

server%ssendmessage:

inet_ntoa(serveraddr.sin_addr),receiveBuffer);

/*发送模式*/

sendFlag=true;

char*CloseClient="

char*CloseC_S="

/*得到输入的数据*/

YourMessage:

if(strcmp(sendBuffer,CloseClient)==0)

send(s,CloseClient,strlen(CloseClient),0);

closesocket(s);

exit

(1);

else{

/*得到发送数据的长度*/

intsendLen=send(s,sendBuffer,strlen(sendBuffer),0);

/*发送数据长度为-1时,发送失败*/

if(sendLen==-1)

{

perror("

发送错误!

closesocket(s);

}

/*发送模式结束,进入接收模式*/

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2