社区
C#
帖子详情
tcp问题
esupermary
2002-06-12 02:36:11
请问各位高手:
我用TcpListener 和TcpClient 做了个通信程序,从client端write(用StreamWriter到NetworkStream),然后由Listener端reade(用StreamReader),可以显示返回的信息,但是要同时从Listener端writer,到client端接受,就会出现错误,这是怎么回事?是不是NetworkStream是单向的?怎么做才可以双方通信?
...全文
42
14
打赏
收藏
tcp问题
请问各位高手: 我用TcpListener 和TcpClient 做了个通信程序,从client端write(用StreamWriter到NetworkStream),然后由Listener端reade(用StreamReader),可以显示返回的信息,但是要同时从Listener端writer,到client端接受,就会出现错误,这是怎么回事?是不是NetworkStream是单向的?怎么做才可以双方通信?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zjbiao12
2002-07-03
打赏
举报
回复
局域网内任何 机器 互相通信,是不是通过服务器端专发?怎么设计呢?
cnwolfs
2002-07-03
打赏
举报
回复
TcpListener就可以了,只是我现在还是无法指定端口发送,当然可以指定接收端口了,然后接收方可以顺着发送方建立的连接发送回数据
BitNomad
2002-07-02
打赏
举报
回复
关注
faygoo
2002-07-02
打赏
举报
回复
小弟前不久也碰到了这个问题,TcpClient在创建输入输出流的时候,确实存在只能单向输入的问题。
你可以换作用Socket来做,例子如下:
TcpListener端code:
TcpListener listener=null;
listener=new TcpListener(ServerPort);//创建TcpListener对象实例
listener.Start(); //启动侦听
Socket s = listener.AcceptSocket();
byte[] recComdata=new Byte[32]; //接收的字节数组
int recLen = s.Receive(recComdata);//接收
byte[] sendbyte=... //此处初始化待发送的字节数组
s.Send(sendbyte,sendbyte.Length,0);//发送
s.Close();
//////////////////////////////////
TcpClient端code:
TcpClient tcpClient=new TcpClient(ServerIP,SeverPort); NetworkStream netStream=tcpClient.GetStream();//得到网络流
byte[] sendCom = Encoding.ASCII.GetBytes("my send data");
netStream.Write(sendCom,0,sendCom.Length);//发送
byte[] recdata=new Byte[1000];//接收的数组
netStream.Read(recdata, 0, recdata.Length);//接收
netStream.close();
tcpClient.close();
以上程序共参考。
bbwolf
2002-07-02
打赏
举报
回复
gz
cometsky
2002-07-02
打赏
举报
回复
读的时候用异步方式,同步读取时缓冲区没满也能被读取,就是说:
假设客户端的缓冲区是1024字节,服务器上正好发送了1024字节的话,客户端有可能会分两次来读取,一次是623,一次是401,这种情况是随机的,所以最好用异步方式,这样,读取结束后你可以在IAsyncResult.IsCompleted属性中知道。
cnwolfs
2002-07-02
打赏
举报
回复
可以相互写的,我找一下例程,如果有的话可以发一个给你,需要的话给我留言
zag
2002-06-13
打赏
举报
回复
关注!
liyin_first
2002-06-12
打赏
举报
回复
关注
临渊羡鱼,不如退而接网
wellgo
2002-06-12
打赏
举报
回复
请问服务器端如何验证客户端的要求???
esupermary
2002-06-12
打赏
举报
回复
那该怎么办呢?
lonk
2002-06-12
打赏
举报
回复
networkstream可以是双向的,但是是tcp的这种方式是阻塞的,
就是一定要读完才能写或者写完才能读,如果你让它读的话而
此时缓冲区里什么都没有,它就处于阻塞态,那你如果此时要写
的话就会出问题.
esupermary
2002-06-12
打赏
举报
回复
我也是这样做的,可是还是不能向两个方向传数据。
longbow74
2002-06-12
打赏
举报
回复
没有仔细研究过TcpListener,不知道listener是否禁止写。一般是不用listener写的,而是在server端产生一个client,用这个client和tcpClient通信。
TcpClient tcpClient = tcpListener.AcceptTcpClient();
RK3399平台开发系列讲解(网络调试)7.28、如何分析常见的
TCP
问题
?
如何分析常见的
TCP
问题
?
docker容器部署nginx外网不通端口监听只有
tcp
6没走
tcp
问题
问题
描述: Docker容器映射到宿主机后,查询端口连接只有
tcp
6没有
tcp
,通过ipv4地址连接时无法连接成功 处理方法1: 1.检查是否开启ipv4端口转发 sysctl net.ipv4.ip_forward 2、若指令返回结果为net.ipv4.ip_forward = 0,执行如下指令 echo 1 > /proc/sys/net/ipv4/ip_forward sysctl -w net.ipv4.ip_forward=1 以上方法是临时添加的转发,重启网卡或服务器后会丢失配
TCP
常见
问题
所以如果客户端已使用端口 64992 与服务端 A 建立了连接,那么客户端要与服务端 B 建立连接,还是可以使用端口 64992 的,因为内核是通过四元祖信息来定位一个
TCP
连接的,并不会因为客户端的端口号相同,而导致连接冲突的
问题
。的工具,就是基于上面这样的方式实现的,它会主动发送 SYN 包获取 SEQ/ACK 号,然后利用 SEQ/ACK 号伪造两个 RST 报文分别发给客户端和服务端,这样双方的
TCP
连接都会被释放,这种方式活跃和非活跃的
TCP
连接都可以杀掉。
面试高频—
TCP
/IP十大
问题
—程序员必备基础素养
TCP
/IP讲绝了!本文整理了一些
TCP
/IP协议簇中需要必知必会的十大
问题
,既是面试高频
问题
,又是程序员必备基础素养。
stm32平台下MODBUS
TCP
网线热插拔故障处理
硬件平台描述: stm32F407+DM9162做
tcp
服务器端,上位机作客户端,通信协议为MODBUS
TCP
问题
还原: 正常工作情况下,拔掉网上超过6秒会出现网络故障,modbus通信一直失败,必须重启单片 机。 原因分析: 通过上位机ping仍然正常。使用Wireshark抓包发现
TCP
仍然处于连接状态,但modbus
tcp
协议不回应。说明:网络连接正常,但502端口通信有
问题
,可能是端口在断线后相关资源并未释放。 在线调试: debug过程中在“
tcp
_server_thread”线程中故障状
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章