错误连接到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);
}
有什么不对?
在此先感谢
答
在Linux上你肯定需要这样的:
serv_addr.sin_port = htons(802);
,因为你需要去的形式主机到网络秩序。 因此,您的服务器实际上正在侦听与您预期不同的端口。即802字节反转。
答
这是因为你必须在linux上做端口转发。 linux的防火墙设置不允许在服务器上接收任何数据。
- 转到系统选项卡 - >管理。
- 选择防火墙
- 选择其他港口
- 添加端口希望服务器使用
现在运行的服务器
您是否收到任何错误?或者只是一个时间? – MyCodeSucks 2015-03-13 14:51:28
我得到一个超时异常 – Rumd 2015-03-13 14:57:07