我在c#中使用监听器等制作了基本的TCP套接字服务器和客户端控制台应用程序。它适用于在同一台机器(127.0.0.1:10048)中执行的服务器和客户端。我想尝试使用同一网络中的不同机器(都连接到同一个调制解调器)。 我应该使用哪个IP端口?我需要帮助。 谢谢
答案 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地址。港口并不重要。确保关闭防火墙以允许连接