- 论坛徽章:
- 0
|
各位大虾,这几天小弟在学习socket编程,自己写了个小例子
目的就是当有client连接进来后,在server端输入一个字符,然后在client端显示。
但是有个问题一直不解,就是在server端,如果输入多个字符,client每连一次都会显示上次server输入的,
如:
#./server
Server start:
A child get in
asd
#./client
buff:a
#./client
buff:s
#./client
buff:d
但是我是用getchar()每次输入一个字符,为什么它不会丢弃之后的两个字符
而且我加了fflush(stdin)好像也不行。不知道是什么原因。
有哪位大侠帮忙解释下。
这是server中的部分代码:- while (1)
- {
- char cmd=0;
- printf("Server start:\n");
- clientfd = accept(listenfd, NULL, NULL);
- printf("A child get in\n");
- cmd = getchar();
- write(clientfd, &cmd, sizeof(char));
- close(clientfd);
- }
复制代码 这是Client的部分代码:-
- char buff;
- while ( read(client_fd, &buff, 1) > 0 )
- printf("buff:%c\n", buff);
复制代码 |
|