2013-05-01 142 views
0

所以我一直在试图用python创建一个简单的聊天程序,但它是Python和C#的组合......服务器是完全由Python构建,客户端是C#。我为他们两个使用套接字。数据通信工作100%。当我点击客户端上的“连接”时,它会连接并发送此消息到流中。通过Python服务器发送一个字符串到C#客户端返回字符串中的字符数

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”为好。我做错了什么? *其它信息: RECV_BUFFER = 4096 #Buffer量可变

接收功能:

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

你们一直在过去,这种有很大的帮助。我只想说谢谢!

+0

你说的客户端是C#,所以这里是为接收端的C#代码?你最可能看看'Socket.Receive'的结果,它返回接收到的字节数(而不是“接收到的字节数”)。接收的字节将在您提供给接收方法的字节数组中。 – 2013-05-01 07:23:15

+0

是的!我正在使用它!我的接收方法是: const int bufferSize = 256; byte [] buffer = new byte [bufferSize]; Parse(Convert.ToString(clientSock.Receive(buffer))); 从这里得到我的结果我该怎么做? – Daaksin 2013-05-01 07:27:12

回答

0

每评论中的问题,这里有一个如何来解析所接收字节的例子:

int numReceived = clientSock.Receive(buffer); 
string msg = Encoding.ASCII.GetString(buffer, 0, numReceived); 
相关问题