64 lines
1.8 KiB
C
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;
|
|
}
|