我应该使用什么ip / port进行TCP套接字服务器/客户端连接?

时间:2015-05-16 12:52:06

标签: c# sockets tcp server tcp-ip

我在c#中使用监听器等制作了基本的TCP套接字服务器和客户端控制台应用程序。它适用于在同一台机器(127.0.0.1:10048)中执行的服务器和客户端。我想尝试使用同一网络中的不同机器(都连接到同一个调制解调器)。 我应该使用哪个IP端口?我需要帮助。 谢谢

2 个答案:

答案 0 :(得分:2)

您应该在临时端口范围内使用端口。临时端口范围是在您激活连接到服务器时从中选择的端口号范围。关键是它可以免费使用。您的内核将跳过已经使用的端口号,因此您也不必担心这一点。

http://en.wikipedia.org/wiki/Ephemeral_port

除此之外,最好不要将您绑定的端口号和IP地址硬编码到连接或发送到的地方。

确保您的操作系统防火墙已关闭。例如,Windows防火墙可以阻止此类流量。

请勿使用您检测到的任何空闲端口未使用。例如,您的系统上可能没有运行FTP或Telnet服务器,但这并不意味着您可以劫持这些端口。从功能的角度来看,如果你这样做,它将会起作用,但是在将来你可能需要它们的某个地方你不能再运行这些服务,或者你的应用程序将开始失败。哪个失败取决于首先启动哪个应用程序并首先开始使用该端口。

绑定ip @时,应使用INADDR_ANY。如果你使用它,环回通信仍然可以工作,你可能已经做过,大多数例子包括它。发送或连接到IP @应来自配置文件(数据驱动)或命令行参数。 IP @当然取决于您要与之通信的机器。

答案 1 :(得分:0)

打开您的CMD并输入@Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Bundle extras = intent.getExtras(); if(AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action) && extras != null && extras.getBoolean(SOME_FINAL_STRING) == true){ Log.d("myButton","Should no longer be called once!"); Intent newIntent = new Intent(context, ExampleActivity.class); newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(newIntent); } else { super.onReceive(context, intent); } } 。在那里,您可以看到您应该用于连接的IPv4地址。港口并不重要。确保关闭防火墙以允许连接