用的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 ( ) ) ;
}
}
但如果直接发就可以发过去.....可能就是在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 ( ) ) ;
}
}
我记得这个似乎在放在while里面的
DAY DAY UP
{
……
}
为什么read()可以,readline()不行?
----------------------------------
对方发过来的数据里没有换行符。
在我看来,你这个程序段根本没有好好的加工,为什么不用while(true)使得服务端更完美一点呢,另外你考虑过如果N个客户端连接上来,并且同时发数据,你要怎么处理么?你考虑过怎么向这些客户端发指令么?你考虑过怎么样解析客户端的数据么?你考虑过如果客户端自动断掉,你怎么断点续传么?
谁规定Socket只能按 一发一收 一收一发 的规则通讯 了???