客户端:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
/*
socket客户端
*/
#define SERVER_PORT 8888
int main( int argc , char *argv[] ){
int client_fd;
struct sockaddr_in client_addr;
int addrlen;
//init socket
client_fd = socket( AF_INET , SOCK_STREAM , 0);
if( client_fd == -1 )
oops( "socket failed:");
//init adddr
client_addr.sin_family = AF_INET;
client_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
client_addr.sin_port = htons(SERVER_PORT);
//connect
addrlen = sizeof( struct sockaddr );
if( connect( client_fd , (struct sockaddr *)&client_addr
, addrlen ) == -1 )
oops( "connect" );
return 0;
}
服务器端:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
/*
socket服务器端
*/
#define SERVER_PORT 8888
#define MAXCONN 5
#define IPNUM 30
int main( int argc , char *argv[] ){
int server_fd;
struct sockaddr_in server_addr , client_addr;
int addrlen;
char client_ip[IPNUM];
//init socket
server_fd = socket( AF_INET , SOCK_STREAM , 0);
if( server_fd == -1 )
oops( "socket failed:");
//init adddr
server_addr.sin_family = AF_INET;
// server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(SERVER_PORT);
//bind
addrlen = sizeof( struct sockaddr );
if( bind( server_fd ,(struct sockaddr *)&server_addr ,
addrlen) == -1)
oops( " bind ");
//listen
if( listen(server_fd , MAXCONN ) == -1)
oops( "listen");
//start looping to accept
while(1){
printf("wait client to request...\n");
if( accept( server_fd , (struct sockaddr *)&client_addr
,&addrlen) == -1 )
oops( "accept" );
inet_ntop( AF_INET , (void *)&client_addr.sin_addr ,
client_ip ,IPNUM );
printf( "connect successful ,client's addr is %s" ,
client_ip);
}
return 0;
}