0

所以我一直在尝试用python创建一个简单的聊天程序,但它是python和c#的组合……服务器完全用python构建,客户端是c#。我对它们都使用套接字。数据通信工作 100%。当我在客户端上单击“连接”时,它会连接并将此消息发送到流中。

byte[] sendBytes = new byte[] { };
sendBytes = Encoding.ASCII.GetBytes("NEW_CONN|");
clientSock.Send(sendBytes);

服务器接收到它并将其传递给“接受”方法。我不会展示这部分的原因是因为它 100% 有效。问题在于服务器到客户端。我不知道这是否是一个跨平台的问题,但我肯定想知道。这是 Python 服务器代码(用于“解析”方法 - 接受来自客户端的数据并响应):

def parseData(sock, message) :
splitString = message.split('|')

if splitString[0] == "NEW_CONN":
    sendString = "CONN_A|"
    sock.send(sendString)  
    CONNECTION_LIST.append(sock)
    print "Client connected: " + str(sock.getpeername())

现在,当客户端收到此消息时,它只是“7”。换句话说,构成 sendString 的字符总数。这不是客户端转换问题,因为我已经测试过输出这样的字符串(服务器端):

print str(sock.send(sendString))

那段代码也输出“7”。我做错了什么?*OTHER INFO: RECV_BUFFER = 4096 #缓冲量变量

接收功能:

data = sock.recv(RECV_BUFFER)
parseData(sock, data)

你们过去帮了大忙。我只想说声谢谢!

4

1 回答 1

0

根据问题中的评论,这是一个如何解析接收到的字节的示例:

int numReceived = clientSock.Receive(buffer);
string msg = Encoding.ASCII.GetString(buffer, 0, numReceived);
于 2013-05-01T07:51:05.820 回答