Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在同一台计算机上运行客户端和服务器

在同一台计算机上运行客户端和服务器
EN

Stack Overflow用户
提问于 2012-03-04 22:27:12
回答 3查看 8.3K关注 0票数 2

我有一个使用UDP端口25565的客户端和服务器应用程序。为了在同一台机器上运行这些应用程序,因为只有一个应用程序可以将自己绑定到端口25565,这是否意味着我有必要使用两个单独的端口在应用程序之间传输数据?

我的想法是:

Client -> 25565 ->服务器

客户端<- 25566 <-服务器

这是唯一的解决方案,还是有其他方法来处理这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-04 22:46:12

你的服务器应用程序打开一个端口并等待客户端connect.

  • Client需要提前知道这个端口,这样它才能建立到所需的连接service.

  • Client可以使用任何可用的端口来发起这个连接(最好使用端口>1000)。

  • 服务器在传入的数据包中看到客户端正在使用的端口,所以它会向它发送一个消息。无需在设计中指定。

  • 握手后,TCP/IP连接由以下4个值标识:服务器IP、服务器端口、客户端IP和客户端端口。

  • 其他连接不能具有相同的4个值。

来回答你的问题。TCP/IP连接是双向的,一旦建立,服务器就可以向客户端发送数据,反之亦然。

我会画出这样的方案:

服务器端口25565 <->客户端端口25566 (或任何其他端口)

票数 8
EN

Stack Overflow用户

发布于 2012-03-04 22:29:27

嗯,不是。只有服务器需要侦听端口25565 -客户端将直接连接到该端口。没有理由指定端口应该“使用”哪个客户端来连接到该端口。此外,一旦服务器接受了连接,端口就可以侦听其他请求。

票数 2
EN

Stack Overflow用户

发布于 2012-03-04 23:34:20

单独的UDP端口的全部意义在于消除侦听传入数据包的应用程序之间的冲突。更改其中一个端口可能是最好的解决方案。

但是,如果您确实希望这两个程序监听同一端口,则需要使用虚拟网络接口,如TUN/TAP (有一个Windows port)。然后,两个应用程序将绑定到具有相同编号但位于不同网络接口上的端口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9559433

复制
相关文章
MSVC std::any 源码解析
std::any 是 c++17 标准新提供的类,作用是存储任意类型的一段内存,并可以重复赋值,在赋值后可以使用 std::any_cast 将 std::any 所存储的值转换成特定类型,如果 std::any 中存储的值的类型与目标类型不匹配,则会抛出 std::bad_any_cast 异常。
Kindem
2022/08/12
1.4K0
MSVC std::unique_ptr 源码解析
std::unique_ptr 是 c++ 11 添加的智能指针之一,是裸指针的封装,我们可以直接使用裸指针来构造 std::unique_ptr:
Kindem
2022/08/12
1.6K0
std::getline错误
vs低版本转高版本,std::getline报错,如下 提示 error C2027: 使用了未定义类型“std::basic_istream<char,std::char_traits> 找了istream转string的其他方法,折腾了很久才发现缺少 #include <sstream> 加上就好了
sofu456
2022/03/07
5510
std::getline错误
std::vector初始化[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/29
1.4K0
msvc交叉编译:使用vcvarsall.bat设置命令行编译环境
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51722353
10km
2019/05/25
2.8K0
诡异!std::bind in std::bind 编译失败
当时看了报错,简单的以为跟之前遇到的原因一样,随即提出了解决方案,怎奈,短短几分钟,就被无情打脸,啪啪啪😭。为了我那仅存的一点点自尊,赶紧看下原因,顺便把之前的问题也回顾下。
高性能架构探索
2023/06/13
7890
诡异!std::bind in std::bind 编译失败
C++ std::isnan等函数的使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
ccf19881030
2019/10/22
7.1K0
undefined reference to `std::cout'等错误 undefined reference to `std::cout'等错误
(2)后缀名为.c的程序和.cpp的程序g++都会当成是c++的源程序来处理。而gcc不然,gcc会把.c的程序处理成c程序。
landv
2021/02/04
2.2K0
std::ref函数
       C++11 的std::ref函数就是为了解决在线程的创建中等过程的值拷贝问题,下面将会用一个线程的创建来展示ref函数的作用。
Ch_Zaqdt
2020/02/14
3.5K0
msvc:BAT脚本判断是否设置MSVC编译的环境变量(执行vcvarsall.bat)
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/79998773
10km
2019/05/25
1.6K0
GCC编译器的-std选项
GCC支持在编译的时候使用-std选项来选择编译语言的标准。程序本身也是在发展的,不断变化的。以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89(偶尔又称为 C90)、C94(C89 的修订版)、C99、C11。同样,C++语言也经历了很多的标准变化,例如C++11,C++14,以及现在最新的C++20。既然语言都发展了这么多的标准,GCC编译器当然也要提供一个标准开关,他就是-std选项。对于编译 C、C++ 程序来说,借助 -std 选项即可手动控制 GCC 编译程序时所使用的编译标准。
zy010101
2020/12/01
2.7K0
GCC编译器的-std选项
msvc2013编译qt5.6源码
    说起到qt的编译,真是领人痛心啊,不仅编译选项繁多,而且编译时间比较久,总是能使想编译qt源码的人望而却步,呵呵。。。我就是其中一个,不知道从什么时候开始就想着把qt的源码编译一下,也尝试过几次,但都以失败而告终,编译的时候总是不得要领,网上的相关文章也是一大片,但总是五花八门,因为不同人的机器是不一样的,编译的源码时可能会出现不一样的错误信息。最近偶然间看到qtcn博客中有人用vs2013编译qt5.6,他也给出了编译的博客地址Qt 5.6.0 动态编译(VS2013 x86 target xp openssl icu webkit) ,我顿时又来了兴趣,兴致勃勃的去到这个地址阅读了作者的编译步骤,开始了新的编译里程。
用户3519280
2023/07/06
3720
msvc2013编译qt5.6源码
Windows 10下vscode使用visual studio 2017的MSVC配置C/C++编译环境
自己的Windows10系统下安装了VS2017,有时候不想每次为了编译和运行简单的C++程序都要打开消耗内存的VSCode,直接使用Visual Studio Code编译和运行C++程序,可以参考Windows 10下vscode使用visual studio 2017的MSVC配置C/C++编译环境这篇博客,微软vscode的官方文档“Configure VS Code for Microsoft C++”,使用visual studio自带的编译器来配置C/C++的编译环境
ccf19881030
2020/10/26
2.1K0
如何优雅的使用 std::variant 与 std::optional
std::variant与std::optional是c++17加入的新容器,variant主要是为了提供更安全的union, 而optional除了存取T类型本身外, 还提供了一个额外的表达optional是否被设置值的状态.
fangfang
2021/10/29
3.8K0
cmake: 使用jom实现msvc工程并发编译提高速度(-j)
摘要总结:本文介绍了cmake编译器中jom的使用方式,包括获取jom、使用cmake生成jom的Makefile、使用jom编译等步骤。通过使用jom,可以大大提高大型项目的编译速度,提高开发效率。
10km
2018/01/03
2.9K0
cmake:解决MSVC下/MT 编译paho.mqtt.c的问题
paho.mqtt.c是eclipse开发的C语言跨平台mqtt client 开源库,之前写过一篇博客《cmake:VS2015和GCC编译paho.mqtt C/C++ client》介绍如何编译它。 最近在使用的时候发现有个问题:paho.mqtt.c在MSVC编译的时候不能支持/MT编译。
10km
2022/04/13
8080
std::function与std::bind使用总结
C++中函数指针的用途非常广泛,例如回调函数,接口类的设计等,但函数指针始终不太灵活,它只能指向全局或静态函数,对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std::function与std::bind这两件大杀器。
forrestlin
2019/07/29
11.4K0
std库sort排序函数的crash
Qt4 to Qt5 - Obsolete Members for <QtAlgorithms>
mariolu
2023/05/26
5200
为什么直接使用 using namespace std 是个坏习惯
有人告诉我在代码里直接使用using namespace std;这样很不好,应该这么用,std::cout、std::cin等等。
ClearSeve
2022/02/10
3370
近期cmake-toolset的一些适配问题
偷懒了好久没有写分享了,最近的时间也是花费了很多时间大量优化了之前游戏服务器框架和组件的很多细节。其中,相对独立且同时也被其他的项目使用的一个工具则是基于 cmake 和 git 且兼容 vcpkg 的构建系统 cmake-toolset 。之所以要写这么个构建工具主要是要提供比 vcpkg 更宽容的兼容性(没办法我们公司的编译环境比较古老),并且提供更进一步的定制化能力(包含但不限于功能开关和下载源,这些东西 vcpkg 也是很后期才有了个初步的支持)。那么先来记录一下构建系统适配过程中的一些问题吧。
owent
2023/03/06
9530

相似问题

为什么MSVC不能编译这个模板函数?

14

MSVC std::isfinite编译问题

15

为什么MSVC不能编译这个CRTP代码?

12

为什么MSVC不初始化这个结构?

12

值模板方法的std::函数使用clang和g++编译,但不使用msvc编译

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文