社区
C#
帖子详情
socket连接成功后 第一次发送成功 对方接收不到 第二次发送成功后却可以
yzk2008
2011-01-17 01:54:28
我用C#开发一个通讯中间件(客户端),在socket连接成功后总是第一次发送成功,对方接收不到,而第二次发送却可以接收到,对方接收成功后,就会断开连接,客户端重新连接,然后第一次发送成功,对方同样接收不到,第二次成功,周而复始。。。。各位大虾有没有碰到这种问题?帮忙解决。。
...全文
650
13
打赏
收藏
socket连接成功后 第一次发送成功 对方接收不到 第二次发送成功后却可以
我用C#开发一个通讯中间件(客户端),在socket连接成功后总是第一次发送成功,对方接收不到,而第二次发送却可以接收到,对方接收成功后,就会断开连接,客户端重新连接,然后第一次发送成功,对方同样接收不到,第二次成功,周而复始。。。。各位大虾有没有碰到这种问题?帮忙解决。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yzk2008
2011-01-22
打赏
举报
回复
上面那个问题已经找到了,是发送的报文格式不对,对方没解析就丢掉了。。。
可是,又发现一个问题:就是客户端程序断掉连接或退出程序,然后再重开程序或重新连接后,服务端发送过来的信息客户端死活收不到。
yzk2008
2011-01-18
打赏
举报
回复
[Quote=引用 9 楼 linux7985 的回复:]
我觉的像这种问题,代码出在服务器端的概率很大
[/Quote]
服务器程序是别公司开发的。。。
烈火蜓蜻
2011-01-18
打赏
举报
回复
我觉的像这种问题,代码出在服务器端的概率很大
zlkingdom
2011-01-18
打赏
举报
回复
这种事情要把服务器程序和客户端程序放在一起联调才能看出问题啊,只看一边找问题有点难...
yzk2008
2011-01-17
打赏
举报
回复
InitConnection()方法初始化socket和连接
SendRpt()绑定一个定时器,读取dtTxSend(DataTable对像)里面的数据并发送出去。
yzk2008
2011-01-17
打赏
举报
回复
[Quote=引用 5 楼 adsdassadfasdfasdf 的回复:]
没看代码 怎么知道
你当我们是神马啊!
[/Quote]
呵呵,各位大虾,不好意思,本人公司有点很贱,上个鸟网还得跑个老大远。。
yzk2008
2011-01-17
打赏
举报
回复
/// <summary>
/// 初始化Socket通讯
/// </summary>
private void InitConnection()
{
try
{
//得到参数配置
sport = int.Parse(Common.Common.ServerPort);
host = Common.Common.ServerIP;
//把ip和端口转化为IPEndPoint实例
ip = IPAddress.Parse(host);
ipe = new IPEndPoint(ip, sport);
//创建一个Socket
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ipe);
ShowText("连接服务端成功...");
}
catch (SocketException ex)
{
ShowText("连接服务端失败...");
Logger.Write(this.Name + "{tab}InitClient{tab}连接服务端失败," + ex.Message, "local");
}
}
private void SendRpt()
{
try
{
lock (dtTxSend)
{
//如果连接断开,则重连
if (socket.Connected == false)
{
lock (socket)
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ipe);
}
}
foreach (DataRow dr in dtTxSend.Rows)
{
//如果为重发信息,则重发
if (dr["STATUS"].ToString() == "1")
{
//如果当前时间与上次发送时间之差大于所设重发时间,则重发
DateTime SendTime = DateTime.Parse(dr["SENDTIME"].ToString());
TimeSpan ts = DateTime.Now - SendTime;
if (ts.TotalMilliseconds >= ReSendTime)
{
byte[] bs = (byte[])dr["RECORD"];
socket.Send(bs, bs.Length, 0);
//发送成功后,将SENDTIME置为当前时间
dr["SENDTIME"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string strmsg = "";
strmsg = "send:重发成功,消息类型:" + dr["MESSAGETYPE"] + ",流水号:" + dr["SENDSN"];
txtMessage.Invoke(new setText(ShowText), new object[] { strmsg });
break;
}
}
}
}
}
catch (ArgumentNullException ex1)
{
txtMessage.Invoke(new setText(ShowText), new object[] { "重发送报文失败:" + ex1.Message });
Logger.Write(this.Name + "{tab}SendRpt{tab}重发送报文失败," + ex1.Message, "local");
}
catch (SocketException ex2)
{
//if (!ex2.Message.Contains("远程主机强迫关闭了一个现有的连接"))
//{
txtMessage.Invoke(new setText(ShowText), new object[] { "重发送报文失败:" + ex2.Message });
//}
Logger.Write(this.Name + "{tab}SendRpt{tab}重发送报文失败," + ex2.Message, "local");
}
一克代码
2011-01-17
打赏
举报
回复
没看代码 怎么知道
你当我们是神马啊!
烈火蜓蜻
2011-01-17
打赏
举报
回复
明显是你的代码有问题,不贴出来没有办法帮你哦
l576981437
2011-01-17
打赏
举报
回复
代码贴出
yzk2008
2011-01-17
打赏
举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
这要看你具体的代码了,可能第一次接收会在发送之前就已经结束,比如非阻塞模式
[/Quote]
如果是你说的这种情况,就会是整个过程的第一次才接收不到,不会这样有规律了吧?
bdmh
2011-01-17
打赏
举报
回复
这要看你具体的代码了,可能第一次接收会在发送之前就已经结束,比如非阻塞模式
Android/Java “TCP
发送
文件,
第一次
发送
、
接收
完成,
第二次
无法
接收
”问题解决记录
使用TCP
发送
多个文件,每发完一个文件就关闭
Socket
,断开
连接
。
发送
下一个文件时在建立
连接
。建立
连接
代码如下: @Override public void run() { Log.i(TAG, "TcpFileReceiver被创建"); while (true) { ...
为什么
socket
第一次
可以接受到消息
第二次
就接受
不到
消息_如果你还看不懂这篇TCP/IP协议的话,就可以来打我了...
上次那篇《终于把TCP/IP 协议讲的明明白白了,再也不怕被问三次握手了》受到了很多读者的喜爱,于是我还是想再说一点,都是大白话,希望大家耐心看完。TCP协议TCP协议全称: 传输控制协议, 顾名思义, 就是要对数据的...
C#
socket
连接
服务器
发送
和
接收
数据在设置断点单步执行没有问题但是直接运行不能
成功
...
题目有点长,又一次感受到自己表达能力的欠缺,其实问题大概是这样的:由于工作需要用C#
socket
(
第一次
使用)写了一个client
连接
服务器,
发送
和
接收
数据包——当然要求能同时
发送
和
接收
数据包,
接收
到就进行处理...
快去请如来佛祖
Socket
连接
批量
发送
,只接受
第一次
因为在客户端进行分批同步时,for循环
发送
第一次
数据同步都正常,但到
第二次
时就停住了,停在了如下图处 2. 服务端代码 3. 客户端核心代码 经过查询后感觉说是通讯阻塞?我也不是很清楚。流下了没知识的眼泪,...
一次问题解决
Socket
问题过程总结
在漫长的软件开发的过程中,总会遇到...最近就遇到一件棘手的事情,有一些实时数据需要用无线
连接
器(客户端Client)通过
Socket
与服务器建立
连接
,并将数据
发送
给服务器,之后断开
连接
。这个流程看似没有问题,实际...
C#
111,119
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章