static void Main(string[] args)
{
string messageFromClient = null;
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
byte[] bytes = new byte[1024];
IPAddress ipAdress = IPAddress.Parse(LocalIPAddress());
const int PORT = 13000;
IPEndPoint localEndPoint = new IPEndPoint(ipAdress, PORT);
try
{
listener.Bind(localEndPoint);
listener.Listen(10);
Console.WriteLine("Wating for a connection..");
Socket handler = listener.Accept();
Console.WriteLine("Got a connection from {0}", handler.RemoteEndPoint.ToString());
while (true)
{
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
messageFromClient += Encoding.ASCII.GetString(bytes, 0, bytesRec);
if (messageFromClient.IndexOf("<Stop>") > -1) break;
}
if (messageFromClient.Contains("<EOG>"))
{
Console.WriteLine("Text recived: {0}",messageFromClient.Replace("<Stop>",""));
handler.Shutdown(SocketShutdown.Both);
handler.Close();
Console.WriteLine("Handler closed.");
return;
}
Console.WriteLine("Text recived: {0}", messageFromClient.Replace("<Stop>", ""));
messageFromClient = null;
string readInput = Console.ReadLine() + "<Stop>";
byte[] messageToClient = Encoding.ASCII.GetBytes(readInput);
handler.Send(messageToClient);
if (readInput.Contains("<EOG>"))
{
handler.Shutdown(SocketShutdown.Both);
handler.Close();
Console.WriteLine("Handler closed.");
return;
}
}
}
catch (SocketException se)
{
Console.WriteLine(se.ToString());
}
catch (ArgumentNullException ane)
{
Console.WriteLine(ane.ToString());
}
}
public static string LocalIPAddress()
{
IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
break;
}
}
return localIP;
}
static void Main(string[] args)
{
IPAddress ipAdress = IPAddress.Parse(LocalIPAddress());
byte[] bytes = new byte[1024];
const int PORT = 13000;
IPEndPoint remoteEP = new IPEndPoint(ipAdress, PORT);
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string messageFromServer = null;
try
{
sender.Connect(remoteEP);
Console.WriteLine("Connected to {0}",sender.RemoteEndPoint.ToString());
while (true)
{
string readInput = Console.ReadLine() + "<Stop>";
byte[] messageToServer = Encoding.ASCII.GetBytes(readInput);
if (readInput.Contains("<EOG>"))
{
messageToServer = Encoding.ASCII.GetBytes("<EOG>");
int bytesSentEnd = sender.Send(messageToServer);
Console.WriteLine("Sent {0} bytes to the server", bytesSentEnd);
sender.Shutdown(SocketShutdown.Both);
sender.Close();
Console.WriteLine("Sender closed.");
return;
}
int bytesSent = sender.Send(messageToServer);
Console.WriteLine("Sent {0} bytes to the server", bytesSent);
while (true)
{
int bytesRec = sender.Receive(bytes);
messageFromServer += Encoding.ASCII.GetString(bytes, 0, bytesRec);
if (messageFromServer.IndexOf("<Stop>") > -1) break;
if (messageFromServer.Contains("<EOG>"))
{
sender.Shutdown(SocketShutdown.Both);
sender.Close();
Console.WriteLine("Sender closed.");
return;
}
}
Console.WriteLine("Message from server: {0}", messageFromServer.Replace("<Stop>",""));
messageFromServer = null;
}
}
catch (SocketException se)
{
Console.WriteLine("Sokcet Exception: {0}", se.ToString());
}
catch (ArgumentNullException ane)
{
Console.WriteLine("Argument Null Exception: {0}", ane.ToString());
}
catch (Exception ex)
{
Console.WriteLine("Unexpected excetption: {0}",ex.ToString());
}
}
public static string LocalIPAddress()
{
IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
break;
}
}
return localIP;
}
通过执行jdweng告诉我的操作,并对代码进行更多的调整,我能够修复这个问题。下面是工作代码,如果有人需要的话:
服务器端:
static void Main(string[] args)
{
string messageFromClient = null;
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
byte[] bytes = new byte[1024];
IPAddress ipAdress = IPAddress.Parse(LocalIPAddress());
const int PORT = 13000;
IPEndPoint localEndPoint = new IPEndPoint(ipAdress, PORT);
try
{
listener.Bind(localEndPoint);
listener.Listen(10);
Console.WriteLine("Wating for a connection..");
Socket handler = listener.Accept();
Console.WriteLine("Got a connection from {0}", handler.RemoteEndPoint.ToString());
while (true)
{
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
messageFromClient += Encoding.ASCII.GetString(bytes, 0, bytesRec);
if (messageFromClient.IndexOf("<Stop>") > -1) break;
}
if (messageFromClient.Contains("<EOG>"))
{
Console.WriteLine("Text recived: {0}", messageFromClient.Replace("<Stop>", ""));
handler.Shutdown(SocketShutdown.Both);
handler.Close();
Console.WriteLine("Handler closed.");
return;
}
Console.WriteLine("Text recived: {0}", messageFromClient.Replace("<Stop>", ""));
messageFromClient = null;
string readInput = Console.ReadLine() + "<Stop>";
byte[] messageToClient = Encoding.ASCII.GetBytes(readInput);
handler.Send(messageToClient);
if (readInput.Contains("<EOG>"))
{
handler.Shutdown(SocketShutdown.Both);
handler.Close();
Console.WriteLine("Handler closed.");
return;
}
}
}
catch (SocketException se)
{
Console.WriteLine(se.ToString());
}
catch (ArgumentNullException ane)
{
Console.WriteLine(ane.ToString());
}
}
public static string LocalIPAddress()
{
IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
break;
}
}
return localIP;
}
客户端:
static void Main(string[] args)
{
IPAddress ipAdress = IPAddress.Parse(LocalIPAddress());
byte[] bytes = new byte[1024];
const int PORT = 13000;
IPEndPoint remoteEP = new IPEndPoint(ipAdress, PORT);
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string messageFromServer = null;
try
{
sender.Connect(remoteEP);
Console.WriteLine("Connected to {0}", sender.RemoteEndPoint.ToString());
while (true)
{
string readInput = Console.ReadLine() + "<Stop>";
byte[] messageToServer = Encoding.ASCII.GetBytes(readInput);
if (readInput.Contains("<EOG>"))
{
int bytesSentEnd = sender.Send(messageToServer);
Console.WriteLine("Sent {0} bytes to the server", bytesSentEnd);
sender.Shutdown(SocketShutdown.Both);
sender.Close();
Console.WriteLine("Sender closed.");
return;
}
int bytesSent = sender.Send(messageToServer);
Console.WriteLine("Sent {0} bytes to the server", bytesSent);
while (true)
{
int bytesRec = sender.Receive(bytes);
messageFromServer += Encoding.ASCII.GetString(bytes, 0, bytesRec);
if (messageFromServer.Contains("<EOG>"))
{
sender.Shutdown(SocketShutdown.Both);
sender.Close();
Console.WriteLine("Sender closed.");
return;
}
if (messageFromServer.IndexOf("<Stop>") > -1) break;
}
Console.WriteLine("Message from server: {0}", messageFromServer.Replace("<Stop>", ""));
messageFromServer = null;
}
}
catch (SocketException se)
{
Console.WriteLine("Sokcet Exception: {0}", se.ToString());
}
catch (ArgumentNullException ane)
{
Console.WriteLine("Argument Null Exception: {0}", ane.ToString());
}
catch (Exception ex)
{
Console.WriteLine("Unexpected excetption: {0}", ex.ToString());
}
}
public static string LocalIPAddress()
{
IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
break;
}
}
return localIP;
}
希望这对某人有所帮助:)
真的需要你帮忙。 我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。 注意:某个端口上的连接将在表单加载中建立并成功。
我有套接字服务器(java桌面应用程序)正在等待从java webapp(套接字客户端)连接。通信看起来还可以,我在客户端看到来自服务器的消息,但是当我发送消息时,我在服务器端没有收到任何消息。会有什么问题呢?当我检查服务器与telnet,一切正常。下面是我的代码: 服务器: 客户: 谢谢帮忙!
我正在使用网络库和浏览器上的WebSocket实现一个套接字节点服务器。我正在成功使用telnet,但浏览器工作不正常。浏览器成功连接到套接字服务器并发送消息。我的服务器实现了一个事件,并立即触发和事件<代码>关闭,事件在断开连接时执行删除客户端(关闭浏览器,连接松动…)。 我不希望浏览器发送消息,然后断开连接。有人知道问题出在哪里吗? 套接字服务器 客户端(浏览器) 浏览器连接到服务器时的输出
问题内容: 我有一个C ++服务器和两个客户端(红宝石和Java)。一切都在64位linux机器(java 1.7.0_17)上运行。ruby客户端可以正常工作,但是java版本会出现问题。 在Java中,我尝试将字符串从客户端发送到服务器。实际上,服务器收到了整个字符串,但是服务器认为还有更多东西要接收。 红宝石客户端看起来像这样: 这里的一切工作正常。红宝石客户端发送一个字符串。服务器接收该字
我试图用java实现一个客户端服务器,在这里我读取客户端中的输入并在服务器中执行UperCase,然后返回客户端并打印UperCase。我使用ObjectOutputStream和ObjectInputStream进行读写,但是当我在客户机中键入一个msg时,程序会显示以下错误: Digite uma msg casa java.io.eofexception位于java.io.datainput
我正试图从套接字服务器(Java)向套接字客户端(Python)发送一个映像,但客户端中接收到的映像大小不正确,无法打开。我不知道我做错了什么。有什么建议吗?