tcpclient怎么读 tcpdump怎么读
delphi 7 我通过TidTCP给下位机发送了命令。下位机会给我一个回复命令。我怎么接收这个回复?
// 发 123
tcpclient怎么读 tcpdump怎么读
tcpclient怎么读 tcpdump怎么读
IdTCP1.Socket.WriteLn('123');
// 读 OK
Memo1.Lines.Add( IdTCP1.Socket.ReadLn );
C#套接字编程,用Tcp接收服务端的套接字,那怎么给它实现一个接收信息的回调函数啊?
你的程序里NetworkStream 放到while外 。服务只侦听。不需要主动去连接客户端。所以不用 BeginConnect。可以异步读BeginRead
byte[] buffer=new byte[1024];
stream.BeginRead(buffer, 0, BufferSize, callBack, null);
回调方法:
private void OnReadComplete(IAsyncResult ar)
{int bytesRead = 0;
try
{lock (streamTo)
{bytesRead = streamTo.EndRead(ar);
}if (bytesRead == 0) throw new Exception("读取到0字节");
string msg = Encoding.UTF8.GetString(buffer, 0, bytesRead);
//msg为接收到的信息
}// 再次调用BeginRead()
lock (streamTo)
{AsyncCallback callBack = new AsyncCallback(OnReadComplete);
stream.BeginRead(buffer, 0, BufferSize, callBack, null);
}}
catch (Exception ex)
{if (streamTo != null)
stream.Dise();
client.Close();
}}
C#读取邮件
写个读邮件的给你看看,至于读数量,研究下就出来了
protected void ReadEmail_Click(object sender, EventArgs e)
{try
{Tcp tcpclient = new Tcp(); // create an instance of Tcp
tcpclient.Connect("", 995); // HOST NAME POP SERVER and gmail uses port number 995 for POP
System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream()); // This is Secure Stream // opened the connection between client and POP
sslstream.AuthenticateAs(""); // authenticate as client
//bool flag = sslstream.IsAuthenticated; // check flag
System.IO.StreamWriter sw = new StreamWriter(sslstream); // Asssigned the writer to stream
System.IO.StreamReader reader = new StreamReader(sslstream); // Assigned reader to stream
sw.WriteLine("USER "); // refer POP rfc command, there very few around 6-9 command
sw.Flush(); // sent to server
sw.WriteLine("PASS your_gmail_password");
sw.Flush();
sw.WriteLine("RETR 1"); // this will retrive your first email
sw.Flush();
sw.WriteLine("Quit "); // close the connection
sw.Flush();
string str = string.Empty;
string strTemp = string.Empty;
while ((strTemp = reader.ReadLine()) != null)
{if (strTemp == ".") // find the . character in line
{break;
}if (strTemp.IndexOf("-ERR") != -1)
{break;
}str += strTemp;
}Response.Write(str);
Response.Write("
" + "Congratulation.. ....!!! Yoead your first gmail email ");
}catch (Exception ex)
{Response.Write(ex.Message);
}}
求助,C#Tcp的getstream 怎么读不到数据
没影响。 可以这样作 NetworkStream netStream=tcp.GetStream(); byte[] buffer =new byte[82];string msg="";int bytesRead;do { bytesRead = netStream.Read(buffer, 0, buffer.length); msg +=Encoding.Unicode.GetString(buffer,0, byte.
c#网络编程的问题,关于Tcp类。
问题3:实例化client后要开一个线程来读写数据的。
1:对,read放在while循环 当然这样cpu会挂,不过Read会让线程挂起 还需要一个推出线程的方法,就是while循环何时break 需要ManualResetEvent这个类来控制
2: Read是阻塞的,不发消息Read一直阻塞,Read一个byte[]是你自己指定 比如
byte[] buffer=new byte[512] Read的第三个参数size就是512
比如发来1025个字节 次Read512个 第二次Read512个 第三次Read1个 第四次Read会挂起了 接受了多少个字节? Read返回int 相加肯定是1025了
目的是缓存 如果Tcp发来1G的数据 client不用缓存读肯定挂了。
1、Read放在while里面,也可以异步接收,
2、你的第二个问题可以用“消息边界”来解决,不用异步的话,必须是你一条,我接收,再发,不然会阻塞
3、另开线程接收,建议你看一下MSDN,里面有一个关于线程的返回值的文章
要有一个单独的线程用于数据的读入
1不要;2while一直,byte.length;3多线程单socket
关于Delphi Indy 控件里IdTcp 的 疑问
procedure THandleThread.Execute;
begin
while not Terminated do
begin
if not FrmMain..Connected then
Terminate
else
try
FrmMain..ReadBuffer(CB, SizeOf (CB));
Synchronize(HandleInput);
except
end;
end;
end;
请楼主自己看看这个程序
FrmMain..ReadBuffer(CB, SizeOf (CB));
这段如果没有数据包的话会抛出异常。所以就不会执行Synchronize(HandleInput);
也就不会处理消息了。直接跳到EXCEPT里面去了。程序循环执行。不影响正常运行。
一般来说INDY的TCPCLIENT里面没有ONREAD。没办法接受消息。所以必须开一个线程来接收发来的信息。灰鸽子的工作原理就是这样的。
应该是停在 FrmMain..ReadBuffer(CB, SizeOf (CB)); 这里了。
Indy 用的是阻塞式。所以会等待。
mark 一下. 坐等高手来解
c#网络编程中tcpListener和tcp的用法
TCPListener类用于客户端连接请求。
TCP类用于提供本地主机和远程主机的连接信息。
两个类都位于 System.Net.Socckets命名空间下
方法 说明
AcceptSocket 从端口处接收一个连接并赋予它Socket对象
AcceptTcp 从端口处接收一个连接并赋予它TCP对象
Equals 判断两个TcpListener对象是否相等
GetType 获取当前实例的类型
Pending 确定是否有挂起的连接请求
Start 开始接听传入的连接请求
Stop 关闭
ToString 创建TcpListener对象的字符串表示
版权声明:本文内容由互联网用户自发贡献。如发现本站有涉嫌抄袭侵权/违法违规的内容, 836084111@qq.com 举报,一经查实,本站将立刻删除。
随便看看
- 2025-04-19 2022绵阳高考作文范文 绵阳2021高三二诊语
- 2025-04-19 江西省吉安市泰和二中高考成绩(江西省吉
- 2025-04-19 26中高考600以上人数 高考26万名
- 2025-04-19 2022咸宁高考人数统计 咸宁市2021年高考成
- 2025-04-19 体育高考生能不能报警校 高考体育生能考