【网络】c++ socket 学习笔记(一)
首先,我也是新手,一边学一边写
先说一下什么是套接字呢(socket) 可以自己去翻书
或者上百度百科 百度百科
那么C++是怎么声明套接字的呢
在声明之前要加入头文件
#include <winsock2.h>
#progma comment(lib, "ws2_32")
如果编译出错自己百度为什么,对不同的IDE有不同的解决方法
下面是C++的声明方法
/* Tcp */
SOCKET sock = socket(PF_INET,SOCK_SDREAM,IPPROTO_TCP);
/* Udp */
SOCKET sock = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
在不使用这个套接字的时候记得要及时关闭
closesocket(SOCKET);
说到这儿就要提到如何连接和接受连接了
先讲连接(比较简单Q~Q)
send(SOCKET, char*, int size, int flags);
第一个SOCKET 不用说是什么了把
第二个char * 就是个字符串
size 就是字符串的大小(长度)=> sizeof
flags 一般为0 但是下面是可选的选项
MSG_DONTROUTE 勿将数据路由出本地网络
MSG_EOR 如果协议支持,此为记录结束
MSG_OOB 如果协议支持,发送带外数据
MSG_NOSIGNAL 禁止向系统发送异常信息
//百度百科上看到的也不知道是否正确
但是,在send之前要先connect到对方
connect(SOCKET, SOCKADDR*, int size);
第一个SOCKET 不说什么了
第二个SOCKADDR* 是什么呢
struct sockaddr_in{
short sin_family; //设置为PF_INET
u_short sin_port; //用来存放连接的端口
struct in_addr{
.....
u_long S_addr; // 用 inet_addr(char *) 把字符串IP转换为数字
}sin_addr;
char sin_zero[8];
}
然后显示转换成SOCKADDR*就行了
size 就是 这个的 sizeof 。。。。
接收下次讲,这次讲到这儿