我想在客户端接收来自服务器端的图片,用TcpClient连接服务器端
TcpClient client = new TcpClient(hostName, portNum);
NetworkStream ns = client.GetStream();
可在客户端怎么知道服务器端发没发送数据?如果服务器端没发送数据
读取ns时将报错,最好就是想服务器端一样一直侦听,直到有数据传
过来再接收,请问各位大虾有什么建议?
TcpClient client = new TcpClient(hostName, portNum);
NetworkStream ns = client.GetStream();
可在客户端怎么知道服务器端发没发送数据?如果服务器端没发送数据
读取ns时将报错,最好就是想服务器端一样一直侦听,直到有数据传
过来再接收,请问各位大虾有什么建议?
解决方案 »
- 上传到服务器一次上传单个可以做到,如何做到同时上传多个文件呢?
- C#操作excel高手进
- 请问在C#中,如何在web.config中调用多个数据库连接?
- dataset datatable
- 请教C#中的一个SQL语句~!
- winform怎么获取移动硬盘或U盘的盘符
- 向高手请教C#控件问题,在线等!
- ***各位路过,看看我5天的成果吧!用C#写的####SmartRun 替代Windows“运行”而设计的软件,准备发布啦!
- 动态数组
- 如何可以固定datagrid中的行数?
- 根据TCP/IP接收客户端发送的消息,如何识别中文,请指教
- 高手请来,为什么我用GZipStream.Read得到的buffer有空间但无值!
客户端发送请求-->等待服务器回发数据,-->这时程序停止继续运行并一直等待回发数据,一旦接收到回发数据,它将不在等待.不管服务器是否全部发完.所以有时会出现异步情况,导致内存泄露. TCPCLIENT有个致命弱点,它不能发送数据量大的东西,只能发些文字聊聊天还可以,如果传文件之类建议还是用底层的SOCKET.
我是想做一个像qq似的两方会话模式
不需要客户端的ip
Dim Ns As NetStream=Client.GetStream()
Dim ErrMsg As String
Dim ErrCodeHT As HashTable
Dim RightCodeHt As HashTable
Function RevResponse() As boolean
Dim text As String
Dim buffer As byte()=New Byte(1024-1){}
Dim Num As integer
Try
Num=Ns.read(buffer,0,buffer.Length)
Catch E as Exception
ErrMsg="网络连接错误,请重试!"
Return False
End Try
if Num<>0 Then
Text=Encode.Default.GetString(Buffer).SubString(0,Num)
End If
Return Text
End Function
Private Sub SMTPCodeAdd()
Me.ErrCodeHT.Add("500", "邮箱地址错误")
Me.ErrCodeHT.Add("501", " 参数格式错误")
Me.ErrCodeHT.Add("502", "命令不可实现")
Me.ErrCodeHT.Add("503", "服务器需要SMTP验证")
Me.ErrCodeHT.Add("504", "命令参数不可实现")
Me.ErrCodeHT.Add("421", "服务未就绪,关闭传输信道")
Me.ErrCodeHT.Add("450", "要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)")
Me.ErrCodeHT.Add("550", "要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)")
Me.ErrCodeHT.Add("451", "放弃要求的操作;处理过程中出错")
Me.ErrCodeHT.Add("551", " 用户非本地,请尝试<forward-path>")
Me.ErrCodeHT.Add("452", "系统存储不足,要求的操作未执行")
Me.ErrCodeHT.Add("552", "过量的存储分配,要求的操作未执行")
Me.ErrCodeHT.Add("553", "邮箱名不可用,要求的操作未执行(例如邮箱格式错误)")
Me.ErrCodeHT.Add("432", "需要一个密码转换")
Me.ErrCodeHT.Add("534", "认证机制过于简单")
Me.ErrCodeHT.Add("538", " 当前请求的认证机制需要加密")
Me.ErrCodeHT.Add("454", "临时认证失败")
Me.ErrCodeHT.Add("530", "需要认证")
Me.RightCodeHT.Add("220", "服务就绪")
Me.RightCodeHT.Add("250", "要求的邮件操作完成")
Me.RightCodeHT.Add("251", "用户非本地,将转发向<forward-path>")
Me.RightCodeHT.Add("354", "开始邮件输入,以<CRLF>.<CRLF>结束")
Me.RightCodeHT.Add("221", " 服务关闭传输信道")
Me.RightCodeHT.Add("334", "服务器响应验证Base64字符串")
Me.RightCodeHT.Add("235", "验证成功")
End Sub
Sub SendMsg()
text=RevResponse()
If (RightCodeHT.Item(Text.SubString(0,IIf(Text.Length>=3,3,Text.Length)) Is Nothing)
Exit Sub
Then
End If
End Sub
Function RevResponse() As String
Dim text As String
Dim buffer As byte()=New Byte(1024-1){}
Dim Num As integer
Try
Num=Ns.read(buffer,0,buffer.Length)
Catch E as Exception
ErrMsg="网络连接错误,请重试!"
Return "False"
End Try
if Num<>0 Then
Text=Encode.Default.GetString(Buffer).SubString(0,Num)
End If
Return Text
End Function
while( true )
{
if( ns.DataAvailable() )
//接收
else
Thread.Sleep(50);
}