我目前正在编写客户端 - 服务器应用程序。客户端在尝试定位服务器时发送UDP广播消息,服务器发送UDP广播消息以识别其位置。
当客户端收到标识服务器位置的消息时,它会尝试使用socket.Connect(remoteEndPoint)连接到服务器。
服务器在侦听套接字上侦听这些TCP请求,并使用listensocket.accept()接受请求。客户端详细信息存储在数组中(包括其IP和端口号)
客户端向服务器发送一条消息,其中包含用户输入的用户名和密码的信息。
服务器检查数据库中的用户名和密码,并根据结果将TCP消息(这是它中断的位置)发回给发送请求的客户端,以便使用侦听套接字检查U& P.我正在尝试使用以下代码发送TCP消息,但它不起作用,因为我收到错误。
TCPSocket.SendTo(message, clientsArray[i].theirSocket.RemoteEndPoint);
答案 0 :(得分:3)
我不确定你使用的是什么方法。
但是在C#中有2个可用作服务器的常用类:TcpClient& Socket
在 TcpClient 中
Yii::$app->view
并在使用TCP的套接字
...
//Start Server
Int32 port = 13000;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
server = new TcpListener(localAddr, port);
server.Start();
//Accept Client
TcpClient client = server.AcceptTcpClient();
NetworkStream stream = client.GetStream();
String data = "Message From Server";
byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
//Send to Client
stream.Write(msg, 0, msg.Length);
...
和使用UDP的套接字
您不应该在服务器上使用此功能,因为您使用的是TCP
...
//Start Server
Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress hostIP = (Dns.Resolve(IPAddress.Any.ToString())).AddressList[0];
IPEndPoint ep = new IPEndPoint(hostIP, port);
listenSocket.Bind(ep);
listenSocket.Listen(backlog);
//Accept Client
Socket handler = listener.Accept();
String data = "Message From Server";
byte[] msg = Encoding.ASCII.GetBytes(data);
//Send to Client
handler.Send(msg);
...
答案 1 :(得分:0)
通常,当您从客户端获得连接时,您将获得TcpClient
。该类有一个方法GetStream()
。如果您想将一些数据发送到该客户端,只需将所需数据写入该流即可。