Это базовая программа для сокетов, устанавливающая соединение между сервером и клиентом.
Отправка и получение данных - это совсем другая проблема, поэтому я пока не разбирался в этом.
МожетКто-нибудь, помогите выяснить, почему в моем коде отказано в соединении?
Сторона сервера
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <arpa/inet.h>
#define PORT 9999
#define ERR perror("Message : ");
int main()
{
int sck = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in serv,*ptr;
serv.sin_port = htonl(PORT);
serv.sin_addr.s_addr = INADDR_ANY;
serv.sin_family = AF_INET;
ptr = &serv;
int len = sizeof(serv);
int x;
if(x=bind(sck,(struct sockaddr *)ptr,(socklen_t)len)<0)
{
perror("Message : ");
return -1;
}
printf("Bind : %d",x);
if(x=listen(sck,3)<0)
{
ERR;
}
printf("Listen : %d",x);
int newfd = accept(sck,(struct sockaddr *)ptr,(socklen_t *)&len);
if(newfd<0)
{
ERR;
}
printf("Newfd : %d",newfd);
printf("Connection Established");
return 1;
}
КлиентСторона
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <arpa/inet.h>
#define PORT 9999
#define ERR perror("Message ");
int main()
{
int sck = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in cli, *ptr;
cli.sin_port = htonl(PORT);
ptr = &cli;
inet_aton("127.0.0.1",&cli.sin_addr);
cli.sin_family = AF_INET;
int len = sizeof(cli);
if(connect(sck,(struct sockaddr *)ptr,(socklen_t)len)<0)
{
ERR;
return -1;
}
printf("Connection established");
}