?? socket.cpp
字號:
#include "sock_os.h"
// 下面兩個函數(shù)LINUX支持,其他兩個系統(tǒng)不支持
#if defined(WIN32) || defined(VXWORKS)
// 點分十進(jìn)制-->網(wǎng)絡(luò)地址的轉(zhuǎn)換;
int inet_pton(int family,const char *strptr,void *addrptr)
{
if(family == AF_INET)
{
struct in_addr in_val;
in_val.s_addr = inet_addr(strptr);
if(in_val.s_addr != INADDR_NONE)
{
memcpy(addrptr,&in_val,sizeof(struct in_addr));
return 1;
}
return 0;
}
return -1;
}
// 網(wǎng)絡(luò)地址-〉點分十進(jìn)制
const char* inet_ntop(int family,const void *addrptr,char *strptr,size_t len)
{
const u_char *p = (const u_char*) addrptr;
if(family == AF_INET)
{
char temp[IP4_LEN];
snprintf(temp,sizeof(temp),"%d.%d.%d.%d",p[0],p[1],p[2],p[3]);
if(strlen(temp) >= len)
{
return NULL;
}
strcpy(strptr,temp);
return strptr;
}
return NULL;
}
#endif
// WIN32 網(wǎng)絡(luò)編程前必須調(diào)用它;LINXU和VX不需要
int WIN32_SOCKET_WSASTARTUP(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return SOCK_ERROR;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return SOCK_ERROR;
}
return SOCK_SUCCESS;
}
// 創(chuàng)建一個UDP套接口并綁定
int Udp_SocketSever_Create(void)
{
socket_int socket_fd;
SOCKADDR_IN servaddr;
socket_fd= socket(AF_INET, SOCK_DGRAM, 0);
if(socket_fd < 0)
{
return SOCK_ERROR;
}
ZeroMemory(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SEVER_PORT);
if (bind (socket_fd, (struct sockaddr *)&servaddr, sizeof (servaddr)))
{
SOCKET_CLOSE(socket_fd);
return SOCK_ERROR;
}
return socket_fd;
}
int Udp_SocketCli_Create(char *server_addr)
{
socket_int socket_fd;
SOCKADDR_IN serveradr;
memset(&serveradr,0,sizeof(serveradr));
serveradr.sin_family = AF_INET;
serveradr.sin_port = htons(SEVER_PORT);
// serveradr.sin_addr.s_addr = inet_addr(server_addr);
inet_pton(AF_INET,server_addr,&serveradr.sin_addr.s_addr);
socket_fd = socket(AF_INET,SOCK_DGRAM,0);
if(socket_fd < 0)
{
return SOCK_ERROR;
}
return socket_fd;
}
// TCP套接口的創(chuàng)建
int Tcp_SocketSever_Creat(void)
{
socket_int socket_fd;
SOCKADDR_IN servaddr;
socket_fd= socket(AF_INET, SOCK_STREAM, 0);
if(socket_fd < 0)
{
return SOCK_ERROR;
}
ZeroMemory(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SEVER_PORT);
if (bind (socket_fd, (struct sockaddr *)&servaddr, sizeof (servaddr)))
{
SOCKET_CLOSE(socket_fd);
return SOCK_ERROR;
}
listen(socket_fd,SOCK_MAX_LISTEN_NUM);
return socket_fd;
}
int Tcp_SocketCli_Create(char *server_addr)
{
socket_int socket_fd;
SOCKADDR_IN serveraddr;
socket_fd= socket(AF_INET, SOCK_STREAM, 0);
if(socket_fd < 0)
{
return SOCK_ERROR;
}
ZeroMemory(&serveraddr,sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
//serveraddr.sin_addr.s_addr = inet_addr(server_addr);
inet_pton(AF_INET,server_addr,&serveraddr.sin_addr.s_addr);
serveraddr.sin_port = htons(SEVER_PORT);
int r_conn = connect(AF_INET,(SOCKADDR*)&serveraddr,sizeof(serveraddr));
if(r_conn != 0)
{
printf("conncet error\n");
return SOCK_ERROR;
}
return socket_fd;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -