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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog