yang19931106 2015-05-22 08:23 采纳率: 0%
浏览 2465
已结题

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 input\n");
while(scanf("%[^EOF]%*c",&buf1)==EOF)
{
    break;
}
scanf("%[^EOF]",&buf1);
scanf("%[^\n]",&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: %s\n",inet_ntoa(server.sin_addr));
printf("server Ip port: %d\n",ntohs(server.sin_port));
printf("%s\n",buf2);
closesocket(sclient);
WSACleanup();
  • 写回答

1条回答 默认 最新

  • nswcfd 2015-05-22 09:29
    关注

    问题是什么,是因为scanf不返回吗?
    %[^EOF]在读取一系列字符,只要输入不包含E或O或F,就不会停止

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料