У меня проблемы с установлением TCP-соединения между двумя устройствами, подключенными к одной и той же сети Wi-Fi (P C и мобильным), код, кажется, в порядке, но клиент (в моем случае, телефон) продолжает пытаться подключиться и к серверу (р c), ждать подключения и в итоге ничего не происходит. Я попытался настроить брандмауэр на P C, но он все равно не работает. Мне бы хотелось, чтобы эти приложения могли работать на других ПК без особой настройки и настройки, поскольку это инструмент для демонстрации в университете.
Я также дал ему разрешения на подключение к Интернету. rnet к мобильному приложению
Здесь я оставляю код п c:
class TcpServerCode
{
IPEndPoint ipEnd;
Socket sock;
public TcpServerCode(int port)
{
ipEnd = new IPEndPoint(IPAddress.Any, port);
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
sock.Bind(ipEnd);
}
public static string curMsg = "Stopped";
public void StartServer()
{
try
{
curMsg = "Starting...";
sock.Listen(100);
curMsg = "Running and waiting to receive file.";
Socket clientSock = sock.Accept();
byte[] clientData = new byte[1024];
int receivedBytesLen = clientSock.Receive(clientData);
curMsg = "Receiving data...";
int fileNameLen = BitConverter.ToInt32(clientData, 0);
string getStr = Encoding.ASCII.GetString(clientData, 4, fileNameLen);
Form1.Singletone.ConsoleLog(getStr);
clientSock.Close();
}
catch (Exception ex)
{
curMsg = "Error.";
}
}
}
А здесь мобильный:
class TcpClientCode
{
public static string curMsg = "Idle";
public static void SendComand(string comand)
{
try
{
IPAddress[] ipAddress = Dns.GetHostAddresses("localhost");
IPEndPoint ipEnd = new IPEndPoint(ipAddress[0], 5656);
Socket clientSock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.IP);
byte[] fileNameByte = Encoding.ASCII.GetBytes(comand);
byte[] clientData = new byte[4 + fileNameByte.Length];
curMsg = "Connection to server ...";
clientSock.Connect(ipEnd);
curMsg = "Command sending...";
clientSock.Send(clientData);
curMsg = "Disconnecting...";
clientSock.Close();
curMsg = "transferred.";
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}