TCP socket 编程,只能发送数据,但收不到数据
用的TCP,阻塞,与终端连接成功,但就是收不到数据.
但如果直接发就可以发过去.....
可能就是在streamReader.ReadLine()这儿出了问题.
请大家帮忙给看看,谢谢...
private void Listen ( )
{
//创建一个tcpListener对象,此对象主要是对给定端口进行侦听
tcpListener = new TcpListener(80);
//开始侦听
tcpListener.Start();
//返回可以用以处理连接的Socket实例
socketForClient = tcpListener.AcceptSocket ( ) ;
try
{
//如果返回值是 "true ",则产生的套节字已经接受来自远方的连接请求
if ( socketForClient.Connected )
{
ListBox1.Items.Add ( "已经和客户端成功连接! " ) ;
while ( true )
{
//创建networkStream对象通过网络套节字来接受和发送数据
networkStream = new NetworkStream ( socketForClient ) ;
//从当前数据流中读取一行字符,返回值是字符串
streamReader = new StreamReader ( networkStream ) ;
string msg = streamReader.ReadLine ( ) ;
ListBox1.Items.Add ( "收到客户端信息: " + msg ) ;
streamWriter = new StreamWriter ( networkStream ) ;
//往当前的数据流中写入一行字符串
streamWriter.WriteLine( "1 ");
//刷新当前数据流中的数据
streamWriter.Flush( );
}
}
}
catch ( Exception ey )
{
MessageBox.Show ( ey.ToString ( ) ) ;
}
}
------解决方案--------------------socketForClient = tcpListener.AcceptSocket ( ) ;
我记得这个似乎在放在while里面的
------解决方案--------------------你不要用ReadLine,直接用Read试试!
------解决方案--------------------同意LS
------解决方案--------------------DAY DAY UP
------解决方案--------------------http://www.cnblogs.com/jetxia/archive/2007/03/20/681356.aspx
=======================
DAY DAY UP
------解决方案--------------------socketForClient = tcpListener.AcceptSocket ( ) ;
放while ( true ) 里面.
------解决方案--------------------是的
while(true)
{
……
}
------解决方案--------------------顶一下
------解决方案--------------------up
------解决方案--------------------chang110cn(口号)
为什么read()可以,readline()不行?
----------------------------------
对方发过来的数据里没有换行符。
------解决方案--------------------这个只能接受一次,另外如wzd24(牧野)所说,对方数据没有换行符。
在我看来,你这个程序段根本没有好好的加工,为什么不用while(true)使得服务端更完美一点呢,另外你考虑过如果N个客户端连接上来,并且同时发数据,你要怎么处理么?你考虑过怎么向这些客户端发指令么?你考虑过怎么样解析客户端的数据么?你考虑过如果客户端自动断掉,你怎么断点续传么?
------解决方案--------------------换个端口试试
------解决方案--------------------接收发送的 规则是 一发一收 一收一发
------解决方案--------------------