版权声明:凡本人原创,转发请注明出处,谢谢! https://blog.csdn.net/qq_41248872/article/details/82983778
代码实例:
服务器server.c:
/*
============================================================================
Name : TCPServer.c
Author : jiangyu
Version :
date : 2018-10-8
Description : Simple Socket Server
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define MYPORT 8080
int main( int argc , char ** argv )
{
struct sockaddr_in saddr, caddr;
char buf[1024];
int sockfd, connfd;
int addr_len;
sockfd = socket( AF_INET, SOCK_STREAM, 0 );
memset(&saddr, 0, sizeof(saddr) );
memset( buf, 0, sizeof(buf) );
saddr.sin_family = AF_INET;
saddr.sin_port = htons(MYPORT);
//saddr.sin_addr.s_addr = inet_addr( INADDR_ANY );
saddr.sin_addr.s_addr = htonl( INADDR_ANY ); //any address
bind( sockfd, (struct sockaddr *)&saddr, 16 );
listen( sockfd, 20 );
printf( "Accepting connections ... \n" );
int n;
while(1)
{
addr_len = sizeof( caddr );
connfd = accept( sockfd, (struct sockaddr*)&caddr, &addr_len );
n = recv( connfd, buf, 100, 0 );
printf("Recived %d bytes: %s \n",n, buf);
close( connfd );
}
return 0;
}
客户端client.c:
/*
============================================================================
Name : TCPClient.c
Author : jiangyu
Version :
date : 2018-10-8
Description : Simple Socket Client
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define SERVER_IP "192.168.31.91"
#define MYPORT 8080
int main( int argc, char** argv )
{
char buf[1024];
char *str = "test string";
if( argc > 1 )
{
str = argv[1];
}
int cli_fd = socket( AF_INET, SOCK_STREAM, 0 );
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(MYPORT);
servaddr.sin_addr.s_addr = inet_addr(SERVER_IP);
if(connect(cli_fd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
{
perror("connect fialed");
exit(1);
}
printf("connect successful!\n");
send( cli_fd, str, strlen(str)+1, 0 );
close(cli_fd);
return 0;
}