Files
cos440-hw3/example/TCP_Server(2).c
T
2025-11-03 03:43:07 +00:00

64 lines
1.8 KiB
C

#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<netdb.h>
#include <errno.h>
int send_size, recv_size ;
int main(int argc , char *argv[])
{
int socket_desc , client_sock , c , read_size; //sockets and such
struct sockaddr_in server , client ; //one for listening one for connection with client(s)
char client_message[20000];
socket_desc = socket(AF_INET , SOCK_STREAM , 0);
client_sock = socket(AF_INET , SOCK_STREAM , 0);
printf("Sockets created\n");
server.sin_family = AF_INET;
server.sin_port = htons( 10059 );
inet_pton (AF_INET, "130.111.216.48", &(server.sin_addr)) ;
if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
{
perror("bind failed. Error"); //perror is a very helpful function for tracking down errors
return 1;
}
printf("bind completed \n");
c = sizeof(struct sockaddr_in);
listen(socket_desc , 1);
printf("Waiting for incoming connections...\n");
client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c);
//if successful, client is filled in with address of connecting socket
if (client_sock < 0)
{
perror("accept failed");
return 1;
}
printf("Connection accepted\n");
recv_size = recv(client_sock , client_message , 32 , 0) ;
printf("Received %d bytes. Msg is\n %s \n",
recv_size, client_message ) ;
sprintf(client_message, "HOW NOW BROWN COW?\n") ; //Other messages could be used as well.
send_size = send(client_sock , client_message , 32,0);
printf("sent %d bytes\n", send_size) ;
fflush(stdout) ;
close(socket_desc) ;
close(client_sock) ;
return 0;
}