服务端
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int server_sockfd;
int client_sockfd;
int server_len, client_len;
struct sockaddr_in server_address;
int byte;
char char_recv[100];
//创建套接字
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(8701);
server_len = sizeof(server_address);
//绑定套接字
bind(server_sockfd, (struct sockaddr *)&server_address, server_len);
//监听套接字
listen(server_sockfd, 5);
printf("server waiting for connect\n");
//等待客户端连接
client_sockfd = accept(server_sockfd, NULL, NULL);
if(-1 == client_sockfd)
{
perror("accept");
exit(0);
}
for(;;)
{
if((byte = recv(client_sockfd, char_recv, 100, 0)) == -1)
{
perror("recv");
exit(EXIT_FAILURE);
}
if(strcmp(char_recv, "exit") == 0)//接受到exit时,跳出循环
break;
printf("receive from client is %s\n",char_recv);//打印收到的数据
}
close(client_sockfd);
close(server_sockfd);
}
客户端
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char *argv[])
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
int i,byte;
char char_send[100] = { 0 };
//创建套接字
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit(EXIT_FAILURE);
}
bzero(&address, sizeof(address));
address.sin_family = AF_INET;
address.sin_port = htons(8701);
inet_pton(AF_INET, "192.168.1.11", &address.sin_addr);
len = sizeof(address);
//连接服务端进行握手
if((result = connect(sockfd, (struct sockaddr *)&address, len)) == -1)
{
perror("connect");
exit(EXIT_FAILURE);
}
char_send[0] = 'e';
char_send[1] = 'x';
char_send[2] = 'i';
char_send[3] = 't';
//如果输入exit,跳出循环
if((byte = send(sockfd, char_send, 100, 0)) == -1)
{
perror("send");
exit(EXIT_FAILURE);
}
close(sockfd);
}