Я новичок в программировании сокетов и я пытаюсь написать простой разъем, который подключается к другой розетке на моем компьютере (nc -l 35353
)гнездо на не-розетке, программа сервера клиента на C
Я постоянно получаю при попытке связать сокет, и я не знаю, как его отладить.
UPDATE: вызов сокета возвращает 0 в качестве дескриптора файла, хотя страница людей не говорит, что это незаконно, я думал, что UNIX/Linux резервного FD 0, 1 и 2 для стандартного ввода, стандартного вывода и stderr по умолчанию. Я не уверен, что это связано с ошибкой привязки, которую я вижу, я просто чувствовал, что это может быть уместно.
Вот код
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
//typedef struct sockaddr_in sockaddr_in;
int main()
{
int sock_fd;
if(sock_fd = socket(AF_INET, SOCK_STREAM, 0) < 0)
{
perror("Socket Creation error!\n");
return 1;
}
struct sockaddr_in myaddr;
memset((char*)&myaddr, 0, sizeof(myaddr));
myaddr.sin_family = AF_INET;
uint32_t myip = (127<<24)|(0<<16)|(0<<8)|1;
myaddr.sin_addr.s_addr = htonl(myip);
myaddr.sin_port = htons(1337);
int binderror = bind(sock_fd, (struct sockaddr*)&myaddr, sizeof(myaddr));
printf("bind error %d\n",binderror);
if(binderror < 0)
{
perror("Bind Error!\n");
return 1;
}
struct sockaddr_in serveraddr;
memset((char*)&serveraddr, 0, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(35353);
//unsigned char serverip[] = {127,0,0,1};
uint32_t serverip = (127<<24)|(0<<16)|(0<<8)|1;
serveraddr.sin_addr.s_addr = htonl(serverip);
if(connect(sock_fd, (struct sockaddr*)&serveraddr, sizeof(serveraddr)) < 0){
perror("Could not connect\n");
return 0;
}
}
И ошибка ... – m0skit0
@ m0skit0 В названии, я подозреваю. – unwind
err ... Если это что-то очень очевидное, я не понял. :( – ffledgling