【发布时间】:2014-03-13 12:57:05
【问题描述】:
我在使用 .NET 3.5 (C#) 编写的 TCP 服务器\客户端遇到问题。
每当我使用下面的代码传输数据时,只有 5 个字符会传输到服务器。如何修复我的代码以使我有超过 5 个字符的传输?
TcpClient client = new TcpClient(connectto.ToString(), portto);
Stream s = client.GetStream();
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
Byte[] data = new Byte[256];
data = System.Text.Encoding.ASCII.GetBytes("auth:" + adminPASS.Text);
s.Write(data, 0, data.Length);
data = new Byte[256];
String responseData = String.Empty;
Int32 bytes = s.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
服务器只获取传输内容的前 5 个字符。其余的都丢失了。
【问题讨论】:
-
你能验证 adminPASS.Text 不为空吗?写入完成时也调用 s.Flush()。
-
即使我加了一个保障,保证文本框的值不为空,看来数据还是没有通过。我还有一个带有“已连接”文本的字符串,它在初始连接到服务器时发送。在 Visual Studio 的输出日志中,我得到这个“得到消息连接”,然后直接在它下面得到“得到消息”。我也尝试使用 s.Flush(),但没有任何改变。
-
你知道你没有发送
Byte[256]的数据,你创建了一个 256 的大数组,但是当你发送data = System.Text.Encoding...时立即将其丢弃,就像你发送Byte[] data = ystem.Text.Encoding...一样。跨度> -
经过一些测试,我发现只有从客户端发送到服务器的数据丢失了。从服务器到客户端的数据保持不变。