如何从流中接收消息?

时间:2014-01-30 05:28:50

标签: c# network-programming

我一直在寻找没有运气的答案。该程序是一个简单的聊天应用程序,可以听或说。在客户端和服务器之间建立连接,但是当我发送消息时,另一个似乎没有接收到它。

服务器等待连接

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,不确定是否可能表明某些内容。

编辑:调整写入和读取以使用流编写器和读取器并刷新

1 个答案:

答案 0 :(得分:1)

1.首先,我建议您确保您的客户端和服务器之间已建立了连接。
2.其次,我建议你在写完后刷新你的流,在Stream中有内置的缓存机制,写入流并不意味着它会立即通过网络发送。
3.这是以这种方式学习网络的好方法,但如果你正在创建商业产品,我建议你去寻找一些成熟的开源组件。