日期:2014-5-19 浏览次数:20381次

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个客户端连接上来,并且同时发数据,你要怎么处理么?你考虑过怎么向这些客户端发指令么?你考虑过怎么样解析客户端的数据么?你考虑过如果客户端自动断掉,你怎么断点续传么?
------解决方案--------------------
换个端口试试
------解决方案--------------------
接收发送的 规则是 一发一收 一收一发
------解决方案--------------------