问题
我正在尝试通过TCP发送图像(PNG)并将其保存在服务器上,客户端是用C#编写的,服务器是用Python编写的。我已经测试过服务器可以使用Python编写的程序,但是当我尝试使用C#执行相同操作时,它只会发送一个部分并被卡住。
我试图打印服务器正在接收的数据,似乎只接收到前1024个字节,然后它就会卡住尝试接收更多。
注意:我已经使用“localhost”更改了主机,并使用通用端口更改了端口,但我实际上是在非本地的虚拟专用服务器上测试它,实际上它是从托管公司租用的。
以下是代码:
Python客户端(可行):
import socket
s = socket.socket()
host = "localhost"
port = 12345
s.connect((host, port))
file = open("image.png", "rb")
imgData = file.read()
s.send(imgData)
s.close()
C#客户端(这不起作用):
TcpClient tcp = new TcpClient("localhost", 12345);
NetworkStream stream = tcp.GetStream();
byte[] image = File.ReadAllBytes("image.png");
stream.Write(image, 0, image.Length);
Python服务器
#!/usr/bin/python
import socket
import os
import io
import os.path
def Main():
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
s.listen(1)
print("Waiting for a connection...")
c, addr = s.accept()
print("Connection from: " + str(addr))
if os.path.isfile("image.png"):
os.remove("image.png")
file = open("image.png", "w+b")
while True:
data = c.recv(1024)
if not data:
break
file.write(data)
print(str(list(data)))
print("Done.")
c.close()
s.close()
if __name__ == "__main__":
Main()