关键代码

详细代码请看示例代码

Service

 //创建套接字
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ipaddress), port);
//也可以使用IPAddress.Any,监听所有网络接口上的客户端活动
//https://docs.microsoft.com/en-us/dotnet/api/system.net.ipaddress.any?view=netframework-4.7.2
//一般来说,服务端套接字都是直接bind端口,不会显式指明ip地址
//否则切换了服务器还需要修改,或者也可以动态获取IP,但是没必要
IPEndPoint ipe2 = new IPEndPoint(IPAddress.Any, port); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
//https://www.codeproject.com/Articles/117557/Set-Keep-Alive-Values
//http://blog.stephencleary.com/2009/05/detection-of-half-open-dropped.html
SetTcpKeepAlive(socket, 600000, 1000);
//绑定端口和IP
socket.Bind(ipe);
//设置监听数
socket.Listen(10);
//连接客户端
await AsyncAccept(socket);

Client

//端口及IP
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ipaddress), port);
//创建套接字
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//开始连接到服务器
client.BeginConnect(ipe,async asyncResult =>
{
client.EndConnect(asyncResult);
//向服务器发送消息
await AsynSend(client, "你好我是客户端");
await AsynSend(client, "第一条消息");
await AsynSend(client, "第二条消息");
//接受消息
await AsynRecive(client);
}, null);

报错

1.在其上下文中,该请求的地址无效

遇到这个问题是在正式服务器上,在测试服务器上运行良好,所以考虑是机器或者网络配置的问题,包括出入站规则、防火墙、端口映射、端口转向等

不是太懂运维的内容,所以对代码进行了修改

把具体的IP改为了IPAddress.Any的写法则运行正常

//报错
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ipaddress), port);
//正确
IPEndPoint ipe = new IPEndPoint(IPAddress.Any, port);

参考资料

在其上下文中,该请求的地址无效

示例代码

示例代码

.net for TCP服务端 && 客户端的更多相关文章

  1. Mina TCP服务端客户端 示例

    服务端代码: package com.xd.nms.example; import java.io.IOException; import java.net.InetSocketAddress; im ...

  2. [javaSE] 网络编程(TCP服务端客户端互访阻塞)

    客户端给服务端发送数据,服务端收到数据后,给客户端反馈数据 客户端: 获取Socket对象,new出来,构造参数:String的ip地址,int的端口号 调用Socket对象的getOutputStr ...

  3. TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端

    目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP部分的使用 框架源码结构 补充说明 源码地址 说明 之前有好几篇博客在讲TCP/UDP通信方 ...

  4. Java TCP服务端向客户端发送图片

    /** * 1.创建TCP服务端,TCP客户端 * 2.服务端等待客户端连接,客户端连接后,服务端向客户端写入图片 * 3.客户端收到后进行文件保存 * @author Administrator * ...

  5. TCP和UDP的区别以及使用python服务端客户端简单编程

    一.TCP.UDP区别总结 1.TCP面向连接(如打电话要先拨号建立连接):UDP是无连接的,即发送数据之前不需要建立连接 2.TCP提供可靠的服务,也就是说,通过TCP连接传送的数据,无差错,不丢失 ...

  6. 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端

    [转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...

  7. python创建tcp服务端和客户端

    1.tcp服务端server from socket import * from time import ctime HOST = '' PORT = 9999 BUFSIZ = 1024 ADDR ...

  8. vertx 从Tcp服务端和客户端开始翻译

    写TCP 服务器和客户端 vert.x能够使你很容易写出非阻塞的TCP客户端和服务器 创建一个TCP服务 最简单的创建TCP服务的方法是使用默认的配置:如下 NetServer server = ve ...

  9. swoole创建TCP服务端和客户端

    服务端: server.php <?php //创建Server对象,监听 127.0.0.1:9501端口    $serv = new swoole_server("127.0.0 ...

随机推荐

  1. JUnit 4.x 与 5.x 的区别?

    区别项 4.x 5.x 手动把测试和测试方法声明为public 需要 不需要 @Test 与JUnit 4的@Test注解不同的是,它没有声明任何属性,因为JUnit Jupiter中的测试扩展是基于 ...

  2. CF300D Painting Square

    Painting Square https://codeforces.com/problemset/problem/300/D 给了一个理解起来较复杂但是本质上很简单的分形. 题解 很显然,只有边长为 ...

  3. Ofbiz项目学习——阶段性小结——删除数据

    一.根据主键进行删除 /** * 按主键进行删除 * @param dctx * @param context * @return */ public static Map<String,Obj ...

  4. TCP拥塞避免

    目录 TCP拥塞避免 超时重传机制 拥塞控制 慢启动 拥塞避免 快重传 快恢复 与流量控制区别 参考 TCP拥塞避免 拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载.拥塞 ...

  5. 爬虫-retrying用法

    文档:https://pypi.org/project/retrying/ 安装 pip install retrying 设置最大重试次数 # coding=utf-8 import request ...

  6. 探索Windows 10的CFG机制

    转载https://www.anquanke.com/post/id/85493 0x00 前言 随着操作系统开发人员一直在增强漏洞利用的缓解措施,微软在Windows 10和Windows 8.1 ...

  7. cube.js 通过presto-gateway 进行连接

    cube.js 对于presto 的支持是通过presto-client 刚好简单修改了一个可以支持presto-gateway 连接的 以下是一个简单的集成,以及关于集成中原有的一些修改 环境准备 ...

  8. 条件随机场CRF原理介绍 以及Keras实现

    本文是对CRF基本原理的一个简明的介绍.当然,“简明”是相对而言中,要想真的弄清楚CRF,免不了要提及一些公式,如果只关心调用的读者,可以直接移到文末. 图示# 按照之前的思路,我们依旧来对比一下普通 ...

  9. AngularJS实现地址栏取值

    有时候我们由如下需求 1.从a.html跳转到b.html 2.从a跳转时携带参数和值. 3.从b.html中取出传过来的参数值 在AngularJS的操作如下 在a.html中添加 <a hr ...

  10. 冰多多团队-第一次Scrum例会

    冰多多团队-第一次Scrum会议 注:由于对课程要求的不熟悉,所以本文档为周会后的补充总结文档 会议基本情况 会议时间:3.28 19:00 - 19:30 会议地点:新主楼F座2楼沙发休息处 工作情 ...