|
|
1
10
你 使用相同的插座!
|
|
|
2
8
您可以使用相同的套接字,但您的程序已设置为让服务器在尝试应答之前读取客户端发送的所有内容。因此,在客户端关闭其套接字的写端之前,服务器中的循环不会完成,因此服务器将获得EOF(读取0字节),因此服务器将永远不会发送回其响应。 有几种方法可以解决这个问题。
|
|
|
3
3
|
|
|
4
2
你不仅应该使用同一个插座(正如费德里科所说),实际上 不得不 防火墙知道TCP连接,如果防火墙内的计算机启动了连接,则会自动允许返回数据通过。如果您尝试从外部创建一个新的TCP套接字,防火墙将阻止它,除非该通信量被明确允许。 |
|
|
5
1
是的,SOCK_流套接字是双向的。您应该能够读写连接两侧的同一插座。的手册页
|
|
|
6
1
是的,你可以。TCP套接字是双向的。只需使用相同的read()和write()函数。另外,请确保检查对connect()、read()、write()和。。。因为你无法控制网络上发生的事情。 |
|
|
7
1
很抱歉我没有说,但我确实这样试过 此代码位于注释所在的服务器中:
以及客户端中的以下代码,其中注释为:
这两个程序都会被阻止,当我杀死客户端时,服务器会显示它收到的消息(在服务器调用之后,我有一个printf) ). 我尝试使用send和recv(都有0个标志)而不是read和write,并且没有改变。 |
|
|
8
1
在当前设置中,服务器尝试读取,直到客户端关闭套接字,而客户端直到服务器应答才关闭套接字。因此你有一种“僵局”。服务器没有停止读取,希望更多的数据可能会到达,而客户端无法告诉服务器它已经完成了。 您需要某种方式让服务器在连接仍然打开时识别请求已完成。例如,如果您通过换行终止请求,服务器可以检查是否收到完整的行,然后停止读取并发送答案。 |
|
|
9
0
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |