[haiku-development] Re: Socket sample code

  • From: Josh Wright <joshwrightthepongo@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sat, 24 Mar 2018 09:47:56 +0000


Awesome!

That did the trick!  :) I did try -lsocket as a guess...

On 24 Mar 2018, at 09:17, Luc Schrijvers <begasus@xxxxxxxxx> wrote:

You probably need to link to -lnetwork ....

2018-03-24 10:11 GMT+01:00 Josh Wright <joshwrightthepongo@xxxxxxxxx>:

On 24 Mar 2018, at 08:19, Jérôme Duval <jerome.duval@xxxxxxxxx> wrote:

2018-03-24 8:34 GMT+01:00 Josh Wright <joshwrightthepongo@xxxxxxxxx>:
I’m looking to write a very simple terminal app that opens a TCP 
connection, sends some data, and closes again.  Is there any sample code I 
can leech? :)

Isn't this actually off topic?
https://en.wikipedia.org/wiki/Berkeley_sockets#Client

Just to explain better... :)

I’m trying to write a simple client app for HaikuOS that sends some data to 
a remote server via TCP.  I downloaded some generic C code (below), but I 
get the following error when I compile it.  Am I missing some headers? 

~/code/c/socket_client> gcc socket.c /tmp/cc52rIJ4.o: In function 
`main': socket.c:(.text+0x20): undefined reference to `socket' 
socket.c:(.text+0x67): undefined reference to `inet_addr' 
socket.c:(.text+0x9b): undefined reference to `connect' 
socket.c:(.text+0x136): undefined reference to `send' 
socket.c:(.text+0x173): undefined reference to `recv' collect2: ld 
returned 1 exit status ~/code/c/socket_client>


Code:

/*

C ECHO client example using sockets

*/

#include<stdio.h> //printf

#include<string.h> //strlen

#include<sys/socket.h> //socket

#include<arpa/inet.h> //inet_addr



int main(int argc , char *argv[])

{

int sock;

struct sockaddr_in server;

char message[1000] , server_reply[2000];



//Create socket

sock = socket(AF_INET , SOCK_STREAM , 0);

if (sock == -1)

{

printf("Could not create socket");

}

puts("Socket created");



server.sin_addr.s_addr = inet_addr("127.0.0.1");

server.sin_family = AF_INET;

server.sin_port = htons( 8888 );



//Connect to remote server

if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)

{

perror("connect failed. Error");

return 1;

}



puts("Connected\n");



//keep communicating with server

while(1)

{

printf("Enter message : ");

scanf("%s" , message);



//Send some data

if( send(sock , message , strlen(message) , 0) < 0)

{

puts("Send failed");

return 1;

}



//Receive a reply from the server

if( recv(sock , server_reply , 2000 , 0) < 0)

{

puts("recv failed");

break;

}



puts("Server reply :");

puts(server_reply);

}



close(sock);

return 0;

}






Bye
Jérôme


Other related posts: