开发者社区> 问答> 正文

c语言实现基于C/S的echo

WSADATA wsadata;
这是客户端代码,不知道要怎么结束
SOCKET sclient;
sockaddr_in server;
int iport;
//char buf1[]="Hello,I am client!";
char buf1[1024];
char buf2[1024];//接收数据
memset(buf2,0,sizeof(buf2));
if(argc<3)
{

printf("Usage:client [server IP address] [server port]\n");
return;

}
iport=atoi(argv[2]);
printf("please inputn");
while(scanf("%1%*c",&buf1)==EOF)
{

break;

}
scanf("%1",&buf1);
scanf("%2",&buf1);//从键盘读入字符串,但是此时有考虑空格
if(WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
{

printf("cuowu1\n");
return;

}
sclient=socket(AF_INET,SOCK_STREAM,0);
if(sclient==INVALID_SOCKET)
{

printf("cuowu2\n");
return;

}
server.sin_family=AF_INET;
server.sin_port=htons(iport);
server.sin_addr.s_addr=inet_addr(argv[1]);
if(connect(sclient,(struct sockaddr*)&server,sizeof(server))==INVALID_SOCKET)
{

printf("cuowu3\n");
return;

}
if(send(sclient,buf1,sizeof(buf1),0)==SOCKET_ERROR)
{

printf("cuowu4\n");

}
if(recv(sclient,buf2,sizeof(buf2),0)==SOCKET_ERROR)
{

printf("cuowu5\n");
return;

}
printf("server Ip address: %sn",inet_ntoa(server.sin_addr));
printf("server Ip port: %dn",ntohs(server.sin_port));
printf("%sn",buf2);
closesocket(sclient);
WSACleanup();


  1. EOF
  2. n

展开
收起
a123456678 2016-03-20 16:03:50 2429 0
1 条回答
写回答
取消 提交回答
  • %1在读取一系列字符,只要输入不包含E或O或F,就不会停止


    1. EOF
    2019-07-17 19:09:47
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载