나는 여러 가지 방법으로이 작업을 시도했지만 제대로 작동하지 않는 것 같습니다. 그러나 방법이 있어야합니다.C# UDP 서버 클라이언트와의 대화
내가 (C#에서) 수행하려는 중 서버를 만드는 것입니다. 서버가 IP 및 포트에서 수신 대기하도록하고 클라이언트에 연결할 때 클라이언트가 말하는 내용을 읽고 회신을 보내주기를 원합니다. 클라이언트의 경우 서버에 연결하여 데이터를 보내고 서버로부터 응답을 수신하려고합니다.
어떻게해야합니까?
MSDN에서 Microsoft 예제와 예제를 사용했습니다. Client> data> Server가 있지만 서버 응답을 포함하지 않는 것 같습니다.
우리가 멀티 플레이어 게임을 가지고 있기 때문에 분명히 할 수 있습니다.
도움 주셔서 감사합니다.
편집 - 코드
서버에
static void Main(string[] args)
{
int recv;
byte[] data = new byte[1024];
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 904);
Socket newSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
newSocket.Bind(endPoint);
Console.WriteLine("Listening for connections...");
//LISTEN FOR CLIENT
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 904);
EndPoint tmpRemote = (EndPoint)sender;
//READ MESSAGE FROM CLIENT
recv = newSocket.ReceiveFrom(data, ref tmpRemote);
Console.WriteLine("Messaged received from: " + tmpRemote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
string welcome = "Welcome to server!";
data = Encoding.ASCII.GetBytes(welcome);
//SEND WELCOME REPLY TO CLIENT
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sock.Bind(tmpRemote);
sock.SendTo(data, tmpRemote);
Console.WriteLine("Reply sent to client");
while (true)
{
if(!newSocket.Connected)
{
Console.WriteLine("Client disconnected.");
break;
}
data = new byte[1024];
recv = newSocket.ReceiveFrom(data, ref tmpRemote);
if (recv == 0)
break;
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
}
newSocket.Close();
Console.WriteLine("Server disconnected.");
Console.ReadLine();
}
}
CLIENT에게
static void Main(string[] args)
{
Console.WriteLine("Message [127.0.0.1:904]: ");
string msg = Console.ReadLine();
byte[] packetData = ASCIIEncoding.ASCII.GetBytes(msg);
string IP = "127.0.0.1";
int port = 904;
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(IP), port);
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
client.SendTo(packetData, ep);
Console.WriteLine("Data sent!");
int recv;
byte[] data = new byte[1024];
EndPoint tmpRemote = (EndPoint)ep;
while(true)
{
//READ MESSAGE FROM SERVER
recv = client.ReceiveFrom(data, ref tmpRemote);
Console.WriteLine("Messaged received from: " + tmpRemote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
}
client.Close();
Console.WriteLine("Client disconnected.");
Console.ReadLine();
}
서버가 클라이언트와 다시 대화하고 클라이언트가 서버의 응답을 읽거나 표시하게 할 수 없습니다.
코드를 표시하십시오. 어디서 붙어 있니? 또는 우리가 당신을 위해 코드 스 니펫을 던지기를 원하십니까? – atlanteh