Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python原始套接字不打印收到的数据(但正在发送)_Python_Sockets_Raw Sockets - Fatal编程技术网

Python原始套接字不打印收到的数据(但正在发送)

Python原始套接字不打印收到的数据(但正在发送),python,sockets,raw-sockets,Python,Sockets,Raw Sockets,我正在向服务器发送两个请求,代码如下: import sys import socket s = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) s.connect((sys.argv[1], 3232)) s.send('HELP\n') print("1st\n" + s.recv(4096)) s.send('HELP\n') print("2nd\n" + s.recv(4096)) s.close() 帮助应该总是返回一些东

我正在向服务器发送两个请求,代码如下:

import sys
import socket

s = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
s.connect((sys.argv[1], 3232))
s.send('HELP\n')
print("1st\n" + s.recv(4096))
s.send('HELP\n')
print("2nd\n" + s.recv(4096))
s.close()
帮助
应该总是返回一些东西;例如,如果使用netcat:

# nc 10.x.x.x 3232

HELP
* LIST OF VALID COMMANDS:
...
我上面发布的代码并不总是输出
HELP
响应。例如它只显示
recv
输入;有时从不(下面的
1st
one甚至没有显示):

我以为没有发送
帮助
,所以我打开wireshark,看到了以下内容;因此,它似乎正确地发送了:

HELP
* LIST OF VALID COMMANDS:
...

HELP
* LIST OF VALID COMMANDS:
...

有什么想法吗?我不确定我可能做错了什么。

经过一些实验,我设法修复了代码。服务器在连接时发回数据;因此,在初始连接时,您必须
s.recv()
;我这样做了,应用程序的行为与我预期的一样

修改代码:

import sys
import socket

s = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
s.connect((sys.argv[1], 3232))
print("0th\n" + s.recv(4096))
s.sendall('HELP\n')
print("1st\n" + s.recv(4096))
s.sendall('HELP\n')
print("2nd\n" + s.recv(4096))
s.close()
这将始终返回以下内容:

# python /tmp/test.py 10.x.x.x
0th
Welcome to...


1st
* LIST OF VALID COMMANDS:
...


2nd
* LIST OF VALID COMMANDS:
...

sys.argv[1]
的值是多少?此外,这些不是原始套接字。这是TCP/IP。
# python /tmp/test.py 10.x.x.x
0th
Welcome to...


1st
* LIST OF VALID COMMANDS:
...


2nd
* LIST OF VALID COMMANDS:
...