我构建了一个客户端/服务器聊天应用程序,其中服务器正在侦听IP号码127.0.0.1
和端口1212
,客户端应该连接到该IP
问题-按以下顺序:
>
我在计算机上运行服务器,正在侦听 (127.0.0.1
我还在我的计算机上运行一个客户端(与#1相同的计算机),它成功地连接到服务器(127.0.0.1
我正在从不同的IP运行另一个客户端,但在尝试连接到服务器时(127.0.0.1
我不明白为什么…这是代码:
服务器端:
public partial class ServerForm : Form
{
private TcpListener m_tcpServer;
private TcpClient m_tcpClient;
private Thread th;
private ServerNotifier m_chatDialog;
private List<ServerNotifier> m_formArray = new List<ServerNotifier>();
private ArrayList m_threadArray = new ArrayList();
public delegate void ChangedEventHandler(object sender, EventArgs e);
public event ChangedEventHandler m_Changed;
public delegate void SetListBoxItem(String str, String type);
// some code
public void StartListen()
{
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
m_tcpServer = new TcpListener(localAddr, Int32.Parse(tbPortNumber.Text));
m_tcpServer.Start();
// Keep on accepting Client Connection
while (true)
{
// New Client connected, call Event to handle it.
Thread t = new Thread(new ParameterizedThreadStart(NewClient));
m_tcpClient = m_tcpServer.AcceptTcpClient();
t.Start(m_tcpClient);
}
}
}
服务器的消息......
客户端 :
public partial class ClientForm : Form
{
// to know when a button was clicked
private bool m_connectionEstablished = false;
private bool m_enterKeyPressed = false;
private bool m_notRunning = false; // flip this when the server is not running
private NetworkStream m_ns = null;
private StateObject m_state = null;
private TcpClient m_clientTcpConnection = null;
// ip and m_username entered by the client
private String m_ipNumberString = String.Empty;
private String m_username = String.Empty;
private int m_port = 0;
public bool StartTheClient(int m_port)
{
byte[] data = new byte[1024];
string inputFromClient = "";
string portString = "";
try
{
// "127.0.0.1"
this.m_clientTcpConnection = new TcpClient(this.m_ipNumberString , this.m_port);
}
catch (Exception e)
{
// this.rtbClientChat.SelectionColor = Color.LimeGreen;
this.m_notRunning = true; // m_clientTcpConnection is not running
MessageBox.Show("The server is currently not running , try again later!");
// connection failed
return false;
}
this.rtbClientChat.SelectedText = "Connected to the Server...";
String local_IP = ((IPEndPoint)m_clientTcpConnection.Client.LocalEndPoint).Address.ToString();
String local_Port = ((IPEndPoint)m_clientTcpConnection.Client.LocalEndPoint).Port.ToString();
this.rtbClientChat.SelectedText = "\nConnected on IP address " + local_IP + " and Port " + local_Port;
this.rtbClientChat.SelectedText = "\nEnter a message to send to the Server";
this.m_ns = m_clientTcpConnection.GetStream();
this.m_state = new StateObject();
this.m_state.workSocket = m_clientTcpConnection.Client;
this.m_clientTcpConnection.Client.BeginReceive(m_state.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(OnReceive), m_state);
// connection established successfully
this.m_connectionEstablished = true;
return true;
}
/// <summary>
/// connet/disconnect
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (this.connectionLabel.Checked == true)
{
// then the user checked the "connet/disconnect" checkbox
// now check if the user also filled the m_port number
try
{
// trying to check if the user entered something is the m_port box
// grab port number
m_port = Int32.Parse(this.boxPortNumber.Text);
m_ipNumberString = this.ipBoxNumber.Text;
// grab IP number
if (m_ipNumberString == string.Empty)
{
MessageBox.Show("Please enter a valid IP Number!");
this.connectionLabel.Checked = false;
return;
}
// grab username
this.m_username = this.usernameBox.Text;
if (this.m_username == string.Empty)
{
MessageBox.Show("Please enter a Username!");
this.connectionLabel.Checked = false;
return;
}
StartTheClient(m_port);
}
catch (Exception exp)
{
if (this.m_notRunning == true)
{
// then the user tried to initiate connection
// while the m_clientTcpConnection is disconnected
this.m_notRunning = false;
}
else
{
// the user didn't put anything in the m_port box
MessageBox.Show("Please enter a Port number !");
this.connectionLabel.Checked = false;
}
}
}
}
它的winform:
任何想法为什么会发生这种情况?
非常感谢!
每个设备都有自己的本地主机(127.0.0.1)。
您不能连接到另一台PClocalhost(127.0.0.1),因此您的服务器应该有IP,例如192.168.0.1,该IP具有可从另一台PC访问的指定端口。
如果不是,每次它只会尝试连接到自己的本地主机!
通常,我们只使用localhost在内部测试我们的网络程序。但是,如果您想在本地主机上进行外部测试,则不会成功。
127.0.0.1 在计算机网络中,本地主机是指此计算机。因此,如果您在另一台PC上运行客户端,它将尝试连接到该PC上的服务器,但您的服务器位于另一台PC上。将客户端 IP 设置为您拥有服务器的 IP。
127.0.0.1
如果您在服务器上有多个网络接口,您应该像这样启动您的侦听器,有关更多详细信息,请访问以下链接:
m_tcpServer = new TcpListener(IPAddress.Any, Int32.Parse(tbPortNumber.Text));
TcpListener构造函数
127.0.0.1是本地主机。您应该指定网络中服务器的IP。通过在命令提示符下运行ipconfig,您可以轻松找到服务器的IP。并且侦听器也应该在该IP地址上启动。
我有两个不同的服务器和,现在我有中的和中的。我试图加入这两个表在MySQL像这样。 但是我犯了一个错误。这在MYSQL中是可能的。
我正在尝试使用Apache Flink流API加入两个流,但没有任何内容加入,并且在阅读文档后我不知道我做错了什么 关键功能是
在我的文件中,我有... 我知道文件正在正确加载,因为服务器在端口8086上运行。 在应用程序中,我有一个 当我调用endpoint时,请求永远不会超时,它只是无限期地挂起。 我错过了什么吗? 注意:我还被告知,Tomcat使用这个字段是以分钟为单位,而不是以毫秒为单位(这在我看来是相当不寻常的选择)。我试着将它设置为< code > server . connection-time out =
我正在使用PHP,MySql和Node.js(socket.io实时聊天)像facebook这样的聊天应用程序。问题是当20个人开始聊天时,我的服务器负载会上升到10-15。我只是在发送方插入消息,并向接收方发送消息ID,接收方从数据库检索消息信息。我有一个Centos服务器有4个物理和4个逻辑核心(共8个核心)和16GB内存。我的网站是在zencart中构建的,当我在静态页面上按f5 1分钟时,
问题内容: 我正在使用PHP和MySQL建立数据库连接,唯一的变化是我试图使用服务器IP地址从本地计算机访问远程服务器。 我得到的错误是。用户拥有所有特权和权利。 问题答案: MySQL的大多数默认安装仅侦听本地计算机。 在服务器上查找设置,并确保它正在侦听目标IP地址。您可能还需要确保 未 打开! 另外一种方法(不太安全!)可以将其设置为侦听所有地址-本地和远程:
问题内容: 我使用nio频道构建了一个简单的聊天应用程序。我对网络和线程非常陌生。该应用程序用于与服务器通信(服务器/客户端聊天应用程序)。 我的问题是服务器不支持多个客户端。我该如何解决这个问题?我的代码中的错误是什么? 问题答案: 初学者Hello NIO Server的 理想之地