我有一个服务器,该服务器托管在子网中。我给它的IP 10.130.28.130。 我在另一个子网中有一个客户端。通过该客户端,我可以ping服务器,但是无法连接到服务器。
服务器[C]:
int ipStatus = system("ifconfig eth0 10.130.28.130");
int netmaskStatus = system("ifconfig eth0 netmask 255.255.255.0");
#define PORT = 8080
void server()
{
int serverSocket, newSocket;
struct sockaddr_in serverAddr;
struct sockaddr_storage serverStorage;
socklen_t addr_size;
int opt = TRUE;
//Create socket
serverSocket = socket(PF_INET, SOCK_STREAM, 0);
if (setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, (char *)&opt,
sizeof(opt))<0)
error("SETSOCKOPT ERROR");
//Configure setting of the server address struct
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
serverAddr.sin_port = htons(PORT);
//Set all bits of the padding field to 0
memset(serverAddr.sin_zero, '\0', sizeof serverAddr.sin_zero);
//Bind the address struct to the socket
bind(serverSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr));
//Listen on the socket, with max 40 connection requests queued
if(listen(serverSocket,40)==0)
printf("\nListening\n");
else
printf("\nError\n");
pthread_t tid[60];
int i = 0;
while(1)
{
//Accept call creates a new socket for the incoming connection
addr_size = sizeof serverStorage;
newSocket = accept(serverSocket, (struct sockaddr *) &serverStorage, &addr_size);
//pthread_mutex_lock(&lock);
//for each client request creates a thread and assign the client request to it to process
//so the main thread can entertain next request
if( pthread_create(&tid[i], NULL, socketThread, (void *)(uintptr_t) newSocket) != 0 )
printf("\nFailed to create thread\n");
else
{
printf("\nSOCKET %i CREATED\n", newSocket);
}
if( i >= 50)
{
i = 0;
while(i < 50)
{
pthread_join(tid[i++],NULL);
}
i = 0;
}
}
}
客户[PYTHON]:
def try_connect(address):
global connected
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(address)
connected = True
return [client, connected]
ip = socket.gethostbyname("10.130.28.130")
port = int(8080)
address = (ip,port)
以前,当它们都在同一网络上并且我将IP设置为本地地址(例如192.168.0.13)时,它就起作用了。
我可以从两个子网上的终端ping客户端和服务器。我想念什么?
编辑以澄清网络设置