service.c
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<strings.h>
#include<unistd.h>
#define PORT 10000
#define BLACKLOG 5
int main(int agrc,char *argv[])
{
struct sockaddr_in server;
struct sockaddr_in client;
int lisendfd = 0;
int connfd = 0;
int opt = SO_REUSEADDR;
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(9990);
server.sin_addr.s_addr = htonl(INADDR_ANY);
//server.sin_addr.s_addr = inet_addr("127.0.0.1");
//create socket;
printf("port = %#x,addr = %#x\n",server.sin_port,server.sin_addr.s_addr);
lisendfd = socket(AF_INET,SOCK_STREAM,0);
if(lisendfd < 0)
{
perror("socket");
exit(1);
}
setsockopt(lisendfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
//bind socket
if(bind(lisendfd,(struct sockaddr *)&server,sizeof(server)) < 0)
{
perror("bind");
close(lisendfd);
exit(1);
}
printf("123\n");
printf("234\n");
//listen sock
if(listen(lisendfd,BLACKLOG) == -1)
{
perror("listen");
close(lisendfd);
exit(1);
}
perror("listen");
printf("345\n");
while(1)
{
//accept
int len = sizeof(client);
connfd = accept(lisendfd,(struct sockaddr *)&client,&len);
if(connfd < 0)
{
perror("accept");
close(lisendfd);
exit(1);
}
printf("client ip :%s,port %d\n",inet_ntoa(client.sin_addr),htons(client.sin_port));
send(connfd,"client success\n",16,0);
}
close(connfd);
close(lisendfd);
return 0;
}
client.c
#include<stdio.h>
#include<stdlib.h>
#include<strings.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#define PORT 10000
#define SERVER_IP "127.0.0.1"
int main(int argc,char *argv[])
{
struct sockaddr_in server;
char buf[32+1] = {0};
int sockfd;
//create server
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd < 0)
{
perror("server");
exit(1);
}
//connect
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(9990);
server.sin_addr.s_addr = inet_addr("127.0.0.1");
printf("port = %#x,addr = %#x\n",server.sin_port,server.sin_addr.s_addr);
if(connect(sockfd,(struct sockaddr *)&server,sizeof(server)) < 0)
{
perror("connect");
close(sockfd);
exit(1);
}
if(recv(sockfd,buf,32,0) < 0)
{
perror("recv");
close(sockfd);
exit(1);
}
printf("buf = %s\n",buf);
close(sockfd);
return 0;
}