我一直在寻找没有运气的答案。该程序是一个简单的聊天应用程序,可以听或说。在客户端和服务器之间建立连接,但是当我发送消息时,另一个似乎没有接收到它。
服务器等待连接
private void ListenForConnection(IPAddress ipAddress)
{
tcpListener = new TcpListener(ipAddress, portNumber);
tcpListener.Start();
client = tcpListener.AcceptTcpClient();
stream = client.GetStream();
stream.ReadTimeout = 200;
}
客户端连接
private void EstablishConnection(IPAddress ipAddress)
{
client = new TcpClient();
client.Connect(ipAddress, portNumber);
stream = client.GetStream();
stream.ReadTimeout = 200;
}
客户端撰写邮件
public void SendMessage(String message)
{
StreamWriter networkWriter = new StreamWriter(stream);
networkWriter.Write(message);
networkWriter.Flush();
}
服务器阅读邮件
public String ListenForMessage()
{
String networkRead = String.Empty;
try
{
networkRead = new StreamReader(stream).ReadToEnd();
}
catch (Exception e) { }
return networkRead;
}
发送和接收对于服务器和客户端是相同的。我希望在消息工作时更多地添加错误处理。
我想知道我的连接可能存在问题。目前我在我的机器上运行2个聊天程序实例,一个服务器一个客户端。当服务器正在侦听端口8080时,客户端在端口8080上的127.0.0.1(localhost)连接。但是客户端不连接192.168.1.100,这是我的计算机的实际IP,不确定是否可能表明某些内容。
编辑:调整写入和读取以使用流编写器和读取器并刷新
答案 0 :(得分:1)
1.首先,我建议您确保您的客户端和服务器之间已建立了连接。
2.其次,我建议你在写完后刷新你的流,在Stream中有内置的缓存机制,写入流并不意味着它会立即通过网络发送。
3.这是以这种方式学习网络的好方法,但如果你正在创建商业产品,我建议你去寻找一些成熟的开源组件。