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后顯示的地址

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM