我在c#中创建了一个服务器客户端应用程序。我设法从客户端发送消息到服务器并阅读它们,但我不知道如何从服务器发回消息到客户端。从服务器发送消息到客户端c#
namespace TCPSockets {
public partial class Form1 : Form {
TcpClient client = null;
TcpListener listener = null;
IPAddress ip = null;
int port = 1337;
Thread thClient = null;
Thread thListener = null;
NetworkStream dataStream = null;
public Form1() {
InitializeComponent();
txt_ip.Text = "127.0.0.1";
txt_port.Text = "1234";
}
private void ListenForConnections() {
listener = new TcpListener(ip, port);
listener.Start();
while (true) {
try {
client = listener.AcceptTcpClient();
dataStream = client.GetStream();
byte[] message = new byte[1024];
dataStream.Read(message, 0, message.Length);
dataStream.Close();
string strMessage = Encoding.UTF8.GetString(message);
MessageBox.Show("Server: I got message: " + strMessage);
}
catch (Exception ex) {
thListener.Join();
}
}
}
private void start_server_Click(object sender, EventArgs e)
{
ip = IPAddress.Parse(txt_ip.Text);
port = Convert.ToInt32(txt_port.Text);
// nit => sicer vmesnik blokira, ko kličemo AcceptTcpClient()
thListener = new Thread(new ThreadStart(ListenForConnections));
thListener.IsBackground = true;
thListener.Start();
}
}
}
namespace TCPSockets {
public partial class Form1 : Form {
TcpClient client = null;
TcpListener listener = null;
IPAddress ip = null;
int port = 1337;
Thread thClient = null;
Thread thListener = null;
NetworkStream dataStream = null;
public Form1() {
InitializeComponent();
txt_ip.Text = "127.0.0.1";
txt_port.Text = "1234";
}
private void SendPacket(object pClient) {
string message = txt_message.Text;
try {
client = (TcpClient)pClient;
client.Connect(ip, port);
dataStream = client.GetStream();
byte[] strMessage = Encoding.UTF8.GetBytes(message);
dataStream.Write(strMessage, 0, strMessage.Length);
dataStream.Close();
client.Close();
}
catch (Exception ex) {
MessageBox.Show("Odjemalec: Pošiljanje ni bilo uspešno!");
}
}
private void send_to_server_Click(object sender, EventArgs e)
{
ip = IPAddress.Parse(txt_ip.Text);
port = Convert.ToInt32(txt_port.Text);
client = new TcpClient();
thClient = new Thread(new ParameterizedThreadStart(SendPacket));
thClient.IsBackground = true;
thClient.Start(client);
}
}
}
没有人知道如何正确地从服务器发送消息给客户端和客户端阅读?
首先客户端必须连接到服务器。然后让服务器写入流,并从流中读取客户端。这与你已有的东西没有多大区别。 – AlexDev
请尝试以下方法:listener.Server。发送 – jdweng
您可以使用与从客户端发送到服务器的方式完全相同的方式将消息从服务器发送到客户端。只是不要关闭插座。确保你阅读了可用的参考资料,包括MSDN示例和非常有用的[Winsock程序员常见问题](http://tangentsoft.net/wskfaq/)。它是Winsock程序员在.NET中编写的,但.NET API只是Winsock上的一个薄层,并且其中的大多数建议仍然适用。 –