Linux下socket的配置

服务器端:

serve.h:

#ifndef _SERVER_H
#define _SERVER_H
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/shm.h>

#define MYPORT 8886

int config_connect_server();


#endif

 

server.c

#include "server.h"
int conn = 0;

int config_connect_server()
{
///定义sockfd
int server_sockfd = socket(AF_INET,SOCK_STREAM, 0);

///定义sockaddr_in
struct sockaddr_in server_sockaddr;
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(MYPORT);
server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);

///bind,成功返回0,出错返回-1
if(bind(server_sockfd,(struct sockaddr *)&server_sockaddr,sizeof(server_sockaddr))==-1)
{
//printf("bind Error!\n");
perror("bind");
exit(1);
}

///listen,成功返回0,出错返回-1
if(listen(server_sockfd,QUEUE) == -1)
{
perror("listen");
exit(1);
}

///客户端套接字
//char buffer[BUFFER_SIZE];
struct sockaddr_in client_addr;
socklen_t length = sizeof(client_addr);

///成功返回非负描述字,出错返回-1
conn = accept(server_sockfd, (struct sockaddr*)&client_addr, &length);
if(conn<0)
{
perror("connect");
exit(1);
}
printf("connect successful!");
return server_sockfd;
}

 

 

客户端:

end.h

#ifndef _END_H
#define _END_H
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/shm.h>
#include <malloc.h>

#define MYPORT 8886

int config_connect(char *);

#endif

end.c

#include "end.h"


int config_connect(char * server_ip)
{
///定义sockfd
int sock_cli = socket(AF_INET,SOCK_STREAM, 0);

///定义sockaddr_in
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); ///服务器ip

///连接服务器,成功返回0,错误返回-1
if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
{
perror("connect");
exit(1);
}

return sock_cli;
}

 其中如果是内部进行通信的时候,地址是 127.0.0.1

如果是外部通信则地址为ifconfig后显示的地址

 

posted @ 2019-03-01 16:53  小小小二  阅读(1493)  评论(0编辑  收藏  举报