TCP chat (very simple)
Server:
int main(void) {
int fd, fd2;
struct sockaddr_in sa;
char buffer[100];
if((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
return -1;
memset(&sa, 0, sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_port = htons(some port - 8888 is good);
sa.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(fd, (struct sockaddr *)&sa, sizeof(sa)) < 0)
return -1;
listen(fd, SOMAXCONN);
while(1) {
fd2 = accept(fd, (struct sockaddr *)&sa, (int *)sizeof(sa));
recv(fd2, buffer, 100, 0);
printf("%s", buffer);
}
return 0;
}
And client:
int main(void) {
int fd;
struct sockaddr_in sa;
char buffer[100];
if((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
return -1;
memset(&sa, 0, sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_port = htons(same as in server - 8888);
sa.sin_addr.s_addr = inet_addr(Server IP);
if(connect(fd, (struct sockaddr *)&sa, sizeof(sa)) < 0)
return -1;
printf("Connected to server.\n");
while(1) {
scanf("%s", buffer);
send(fd, buffer, 100, 0);
}
return 0;
}
There's maybe some bugs and this is one way chat from client to server. If you are compiling this for Windows you must add WSAStartup(MAKEWORD(2, 2), &wsadata); this exam. works on Linux.