📄 network.c
字号:
#include "NetWork.h"
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stdio.h>
/* model:1 客户端
* model:2 服务端
*/
int NetContral(char *addr, int port, int bPort, int model)
{
int Socket, opt = 1, rt;
struct sockaddr_in Address;
memset(&Address, 0, sizeof(Address));
Address.sin_family = AF_INET;
if (model == 2)
Address.sin_addr.s_addr = htonl(INADDR_ANY);
else if (model == 1 && addr != NULL)
Address.sin_addr.s_addr = inet_addr(addr);
else
return CLIENT_HOST_NOT_NULL;
Address.sin_port = htons(port);
if ((Socket = socket(AF_INET, SOCK_STREAM, 0)) == -1)
return NETWORK_GETSOCKET_FAIL;
setsockopt(Socket, SOL_SOCKET, SO_REUSEADDR, (const void *)&opt, sizeof(opt));
if (model == 1 && bPort != -1)
{
struct sockaddr_in aAddress;
memset(&aAddress, 0, sizeof(aAddress));
aAddress.sin_addr.s_addr = htonl(INADDR_ANY);
aAddress.sin_port = htons(bPort);
if (bind(Socket, (struct sockaddr *)&aAddress, sizeof(aAddress)) == -1)
return CLIENT_BIND_EXCEPTION;
}
if (model == 1 && ((rt = connect(Socket, (struct sockaddr *)&Address, sizeof(Address))) != -1))
return Socket;
else if (rt == -1)
return CLIENT_CONNECT_FAIL;
if (bind(Socket, (struct sockaddr *)&Address, sizeof(Address)) < 0)
return SERVER_BIND_EXCEPTION;
if (listen(Socket, 5) <0)
return SERVER_LISTEN_EXCEPTION;
else
return Socket;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -