2012-07-08 3 views
1

C# (클라이언트)와 파이썬 (서버) 사이의 기본 소켓 통신에서 작업 중이며 클라이언트에서이 오류가 발생한 이유를 알 수 없습니다.C# 클라이언트 파이썬 서버 : 연결이 거부되었습니다.

[오류] 치명적이지 않은 예외 : System.Net.Sockets.SocketException : 연결이/private/tmp/monobuild/build의 System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x00159]에서 을 거부했습니다. /BUILD/mono-2.10.9/mcs/class/System/System.Net.Sockets/Socket_2_1.cs:1262 at System.Net.Sockets.TcpClient.Connect (System.Net.IPEndPoint remote_end_point) [0x00000] in/private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System/System.Net.Sockets/TcpClient.cs : 284 at System.Net.Sockets.TcpCli ent.Connect (System.Net.IPAddress [] ipAddresses, Int32 port) /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System/System.Net.Sockets/TcpClient의 [0x000b3] .cs : 355

내 프로그램은 정말 짧고 쉽기 때문에 멍청한 질문이라고 생각되지만, 나는 이해하지 못합니다. 내가 원한 것은 클라이언트가 콘솔에 그것을 출력 할 서버에 메시지를 보내는 것이다. 여기

는 C#을 클라이언트입니다 (오류가에서 온다 :를 Socket.connect를 ("로컬 호스트", 9999);)

using System; 
using System.Net.Sockets; 

namespace MyClient 
{ 
class Client_Socket{ 
    public void Publish(){ 
TcpClient socket = new TcpClient(); 
socket.Connect("localhost",9999); 
NetworkStream network = socket.GetStream(); 
System.IO.StreamWriter streamWriter= new System.IO.StreamWriter(network); 
streamWriter.WriteLine("MESSAGER HARGONIEN"); 
streamWriter.Flush(); 
network.Close(); 
    } 

} 
} 

그리고 파이썬 서버 : 당신의 도움에 대한

from socket import * 

if __name__ == "__main__": 
    while(1): 
     PySocket = socket (AF_INET,SOCK_DGRAM) 
     PySocket.bind (('localhost',9999)) 
     Donnee, Client = PySocket.recvfrom (1024) 
     print(Donnee) 

들으 .

답변

4

두 가지 문제가 있습니다. 첫 번째는 localhost에 바인딩한다는 것입니다. 당신은 아마 다른 컴퓨터에 연결할 수 있도록하려면 0.0.0.0에 바인딩 할 :

PySocket.bind (('0.0.0.0',9999)) 

다른 문제는 UDP 봉사와 TCP 연결을 시도하고있다. UDP를 사용하려면 TcpClient 대신 UdpClient을 사용할 수 있습니다. TCP를 사용하려면 대신 SOCK_STREAM을 사용해야하고 recvfrom 대신 listen, acceptrecv을 사용해야합니다.

+0

대단히 감사드립니다. – ssx

관련 문제