我有一個C/C++ TCP客戶端在OpenSUSE中工作,但不在Debian中。 我正在使用nc -l 4242作爲服務器。 然後我在Debian系統(Sid)上連接./my_client 127.0.0.1 4242,使用連接功能時它會失敗。在openSUSE中工作的套接字在Debian中無法工作?
您是否可以確認您是否使用Debian或其他操作系統也有相同的錯誤? 問題從哪裏來?
下面的代碼:
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
void do_server(int s)
{
write(s, "client connected\n", strlen("client connected\n"));
close(s);
}
int main(int ac, char **av)
{
struct protoent *pe;
struct sockaddr_in sin;
int s;
if (ac != 3)
{
std::cerr << "Usage: ./client ip port" << std::endl;
return EXIT_FAILURE;
}
pe = getprotobyname("TCP");
if ((s = socket(AF_INET, SOCK_STREAM, pe->p_proto)) == -1)
{
std::cerr << "Error: socket" << std::endl;
return EXIT_FAILURE;
}
sin.sin_family = AF_INET;
sin.sin_port = htons(atoi(av[2]));
sin.sin_addr.s_addr = inet_addr(av[1]);
if (connect(s, (const struct sockaddr *)&sin, sizeof(sin)) == -1)
{
std::cerr << "Error: connect" << std::endl;
close(s);
return EXIT_FAILURE;
}
std::cout << "client started" << std::endl;
do_server(s);
return EXIT_SUCCESS;
}
那麼,會發生什麼? – 2013-03-10 02:25:39
它在我的系統上運行sid。 – qqx 2013-03-10 02:39:56
@SamuelEdwinWard它將打印「錯誤:連接」,因爲連接功能將失敗。 – baptx 2013-03-10 02:46:34