我有c#代码连接到localhost ip地址127.0.0.1和端口号。 5939.连接完全正常,但没有收到任何数据。我希望它能够接收数据并将其保存到本地计算机上的文本文件中。
它是否没有接收数据,因为它位于localhost和同一台机器上,或者我的代码中有错误。
这是我的代码..
byte[] data = new byte[1024];
string input, stringData;
String ip = "127.0.0.1";
Int32 port = 5939;
string path = "D://ipdata.text";
if (File.Exists("D://ipsettings.txt"))
{
File.Delete("D://ipsettings.txt");
}
IPAddress ipad = IPAddress.Parse(ip);
IPEndPoint ipend = new IPEndPoint(ipad, port);
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sock.Connect(ipend);
}
catch (Exception ex)
{
throw ex;
}
try
{
int recv = sock.Receive(data);
stringData = Encoding.ASCII.GetString(data, 0, recv);
while (true)
{
input = "Client here";
sock.Send(Encoding.ASCII.GetBytes(input));
data = new byte[1024];
recv = sock.Receive(data);
stringData = Encoding.ASCII.GetString(data, 0, recv);
string df = "";
try
{
System.IO.FileInfo fi = new System.IO.FileInfo(path);
我的程序没有在此行之后执行..
int recv = sock.Receive(data);
请帮助我摆脱这种情况。 提前谢谢。
答案 0 :(得分:2)
除非接收函数给你,否则你需要读取数据。
使用while
循环来确定data
是否可用。
int recv=0;
byte[] data = new byte[1024];
StringBuilder sb= new StringBuilder();
while ((recv=sock.Receive(data)) > 0)
{
sb.Append(Encoding.ASCII.GetString(data, 0, recv));
}