chetian2000 2023-07-05 10:21 采纳率: 0%
浏览 17

c#, socket,数据在socket.close之后才发送出去

c#, socket,数据理应在调用socket.send之后发出去,但实际上调用socket.close之后才发送出去。全网找了2天答应,都没解决。谢谢各位。

try
            {
                string message = "device=camera;item=ois;command=start;\\r\\n";
                byte[] bytes = Encoding.ASCII.GetBytes(message);
                Socket s = null;
                IPEndPoint hostEndPoint;
                IPAddress hostAddress = null;
                int conPort = 80;

                hostAddress = IPAddress.Parse("127.0.0.1");
                hostEndPoint = new IPEndPoint(hostAddress, 9103);

                // Creates the Socket to send data over a TCP connection.
                s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                s.ReceiveTimeout = 1000*15;

                // Connect to the host using its IPEndPoint.
                s.Connect(hostEndPoint);

                if (!s.Connected)
                {
                    // Connection failed, try next IPaddress.
                    Console.WriteLine("Unable to connect to host");

                }
                s.Send(bytes);
                s.Close();
            } // End of the try block.

  • 写回答

3条回答 默认 最新

  • 於黾 2023-07-05 10:27
    关注

    你是怎么测得这个结论的呢,中间加了sleep延时10秒吗
    否则send和close之间没有任何代码,中间到底是否有阻塞你是怎么得知的呢
    send只是将数据送到发送缓冲区,至于网卡什么时候将数据真正发出去,那是物理层决定的,不归应用层管
    另,有发送就有接收,接收也是你写的对吗,把接收的代码放出来看看,是不是连接的时候一直在阻塞接收,要到断开之后才print

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月5日

悬赏问题

  • ¥20 access中怎么分割分别获取一下图中的值
  • ¥15 keras_tcn已经安装成功,还是显示ModuleNotFoundError: No module named 'keras_tcn'
  • ¥15 类图中关联与聚合的区别
  • ¥15 ENVI高分五号去除云层的方法
  • ¥15 16进制数据如何得到奇偶校验位
  • ¥15 求合并两个字节流VB6代码
  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题