【网络】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 。。。。
接收下次讲,这次讲到这儿

posted on 2015-02-25 01:35  JeremyGuo  阅读(197)  评论(0编辑  收藏  举报

导航