【发布时间】:2011-06-10 04:48:43
【问题描述】:
好的,我正在开发一个在端口 4 上充当服务器的 c# 应用程序。我的网站上的一个 php 脚本充当客户端。它可以连接到服务器,但是,当服务器或客户端尝试发送数据时。数据原来只是随机数和符号。 下面的脚本
PHP:
$msg = $host + " connected;";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $host, 4);
socket_write($socket, $msg, strlen($msg));
socket_close($socket);
C#:
while (heartbeat == false)
{
if (listener.Pending())
{
heartbeatC = listener.AcceptTcpClient();
//heartbeatS = listener.AcceptSocket();
NetworkStream heartBeatStream = heartbeatC.GetStream();
string heartbeatEP = heartbeatC.Client.RemoteEndPoint.ToString();
string heartbeatIP = heartbeatEP.Remove(heartbeatEP.IndexOf(':'), heartbeatEP.Length - heartbeatEP.IndexOf(':'));
if (heartbeatIP == Dns.GetHostAddresses("***.********.com")[0].ToString())
{
dottime.Enabled = false;
Console.WriteLine("\nHeartbeat.");
bool heartbeatR = false;
while (heartbeatR == false)
{
if (heartBeatStream.DataAvailable)
{
//StreamReader sr = new StreamReader(heartBeatStream);
byte[] message = new byte[1024];
int bytesRead = 0;
bytesRead = heartbeatC.Client.Receive(message);
ASCIIEncoding encoder = new ASCIIEncoding();
string msg = encoder.GetString(message);
Console.WriteLine("Server: " + msg);
heartbeatR = true;
}
}
heartbeat = true;
}
else
{
heartbeatC.Client.Disconnect(true);
}
}
}
【问题讨论】:
-
无关提示:使用using statement 确保正确关闭流和套接字等资源。现在,“随机数字和符号”是指它们每次运行都不同(随机),或者它们始终相同,但错误?
-
我恢复了您的更改(您删除了整个问题!)。顺其自然,以供将来可能遇到相同问题的其他人参考。这就是 StackOverflow 的全部意义所在。 ;)