【发布时间】:2016-06-29 15:04:40
【问题描述】:
我有连接到 localhost ip 地址 127.0.0.1 和端口号的 c# 代码。 5939. 连接正常,但没有接收任何数据。我希望它接收数据并将其保存到本地机器上的文本文件中。
它没有接收数据是因为它在本地主机上和同一台机器上还是我的代码有错误..
这是我的代码..
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);
请帮助我摆脱这种情况。 提前致谢。
【问题讨论】:
-
您的服务器是在连接启动后立即发送数据(从您的代码开始)还是需要向其发送一些命令?
-
还为套接字添加超时,这样它就不会无限期地等待。
-
@bansi 我不知道先生,因为这是我自己机器的本地主机..
-
接收是块调用,会等待数据。您可以使用异步的 Socket.BeginReceive 或 ReceiveAsync。正如 Bansi 也提到的,您如何将数据发送到该端点进行测试?
-
server我的意思是你正在连接的应用程序。
标签: c# sockets tcp tcplistener