|
- #include"tcpSocket.h"
-
- bool init_Socket()
- {
- WSADATA wsadata; //定义变量wsadata
- if (0 != WSAStartup(MAKEWORD(2,2),&wsadata)) //WSA:windows socket ansyc windows异步套接字;2.2版本
- {
- //不等于0失败
- //printf("[error]WSAStartup failed code %d", WSAGetLastError());
- err("WSAStartup");
- return false;
- }
-
- return true;
- }
-
- bool close_Socket()
- {
- if (0 != WSACleanup())
- {
- err("WSACleanup");
- return false;
- }
-
- return true;
- }
-
- SOCKET create_serverSocket()
- {
- //1.创建一个空socket,AF_INET代表IPV4,SOCK_STREAM流式套接字
- SOCKET fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (INVALID_SOCKET == fd)
- {
- err("socket");
- return INVALID_SOCKET; //错误就返回,正确就继续
- }
- //~0(对0取反) 对于有符号来说是-1,对于无符号来说是最大值
-
- //2.给socket绑定本地的ip地址和端口号
- struct sockaddr_in addr; //结构体addr
- addr.sin_family = AF_INET; //协议族IPV4
- addr.sin_port = htons(PORT); //本地字节序转成网络字节序,大端存储和小端存储的相互转换
- addr.sin_addr.S_un.S_addr = ADDR_ANY; //绑定本地任意ip
-
- if (SOCKET_ERROR == bind(fd, (struct sockaddr*)&addr, sizeof(addr))) //(struct sockaddr*)强制转换
- {
- err("bind");
- return INVALID_SOCKET;
- }
- //3.开始监听
- listen(fd, 10);
-
- return fd;
- }
-
- SOCKET create_clientSocket(const char * ip)
- {
- //1.创建一个空socket,AF_INET代表IPV4,SOCK_STREAM流式套接字
- SOCKET fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (INVALID_SOCKET == fd)
- {
- err("socket");
- return INVALID_SOCKET; //错误就返回,正确就继续
- }
- //~0(对0取反) 对于有符号来说是-1,对于无符号来说是最大值
-
- //2.给socket绑定服务端的ip地址和端口号
- struct sockaddr_in addr; //结构体addr
- addr.sin_family = AF_INET; //协议族IPV4
- addr.sin_port = htons(PORT); //本地字节序转成网络字节序,大端存储和小端存储的相互转换
- addr.sin_addr.S_un.S_addr = inet_addr(ip); //绑定服务器ip,ip转换格式
-
- //
- if (INVALID_SOCKET == connect(fd, &addr, sizeof(addr)))
- {
- err("connect");
- return INVALID_SOCKET;
- }
-
-
-
- return fd;
- }
|