?? 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 + -