错误连接到C#客户端到C服务器

问题描述:

我想连接我的C#客户端到我的C服务器。 客户端位于Windows和Linux上的服务器上。错误连接到C#客户端到C服务器

服务器正常运行,但客户端无法连接,连接超时。

C服务器:

int main() 
{ 
int socketid; 
int clientid = 0; 
char bufer[1024]; 
struct sockaddr_in serv_addr, client_addr; 
memset(&serv_addr, 0, sizeof(serv_addr)); 
int addrlen = sizeof(client_addr); 

printf("Start\n"); 

if((socketid = socket(AF_INET, SOCK_STREAM, 0)) < 0){ 
    printf("Error ceating socket!\n%s", strerror(errno)); 
    getchar(); 
    return 0; 
} 
printf("S0cket created\n"); 
serv_addr.sin_family = AF_INET; 
serv_addr.sin_addr.s_addr = INADDR_ANY; 
serv_addr.sin_port = 802; 

if(bind(socketid, (struct sockaddr*) &serv_addr, sizeof(serv_addr)) < 0){ 
    printf("%s\n", strerror(errno)); 
    getchar(); 
    return 0; 
} 
printf("Bindend\n"); 
listen(socketid, 0); 
printf("Listening\n"); 

printf("Entering loop\n"); 
while(1) 
{ 
    sleep((50)*1000); 
    clientid = accept(socketid, (struct sockaddr*) &client_addr, &addrlen); 
    if(clientid > 0){printf("accepted");}else{printf("error");} 
} 
} 

C#客户端:

void btnClick(object Sender, EventArgs e) 
{ 
    TcpClient client = new TcpClient(); 
    client.Connect("192.168.1.102", 802); 
} 

有什么不对?

在此先感谢

+0

您是否收到任何错误?或者只是一个时间? – MyCodeSucks 2015-03-13 14:51:28

+0

我得到一个超时异常 – Rumd 2015-03-13 14:57:07

在Linux上你肯定需要这样的:

serv_addr.sin_port = htons(802); 

,因为你需要去的形式主机到网络秩序。 因此,您的服务器实际上正在侦听与您预期不同的端口。即802字节反转。

+0

它仍然没有工作,任何其他建议? – Rumd 2015-03-13 19:18:33

+0

ping你想访问的服务器IP地址。检查是否没有防火墙,在移到远程机器之前先在本地运行服务器和客户端。 – 2015-03-13 19:22:53

+0

ping工作,没有防火墙,编译器给出错误,如果我在Windows上运行它,所以我不能在本地运行它。 客户端仍然给出SocketExeption。 – Rumd 2015-03-14 12:36:36

这是因为你必须在linux上做端口转发。 linux的防火墙设置不允许在服务器上接收任何数据。

  1. 转到系统选项卡 - >管理。
  2. 选择防火墙
  3. 选择其他港口
  4. 添加端口希望服务器使用

现在运行的服务器