winsocket编程笔记(一)
前言:
因为疫情原因,现在一直在网上授课,教师在讲述winsocket这一课程时没有给予我们课本,只有毫不相搭的linux环境的socket编程视频,故于此(开学第七周)总结winsocket的内容。
注:
以下代码都以C++环境为例
一.Windows Socket 基础
Windows Socket DLL的初始化和释放函数的调用方法
- 库函数语法, 符号常量, 数据机构在 WinSock2.h
- 静态编译时用 ws2_32.lib
- 动态调用时用 ws2_32.dll
- 支持多种协议
- 支持服务质量 QoS
- 增加异步机制和重叠I/O
- 更多的函数
Windows socket 网络编程思路
.初始化 Windows socket
.创建socket
.将socket与地址结构绑定
.发送/接收数据
.释放socket
.终止Windows socket socket常用函数和数据结构:
//windows socket 的初始化和终止
WSAStartup
WSACleanup
//创建和释放socket
socket
closesocket
//绑定socket和地址结构
bind
listen
accept
connetc
sockaddr
sockaddr_in
in_addr
//发送, 接收数据
send
sendto
recv
recvfrom
头文件:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
初始化函数 WSAStartup
写在主函数中(写在main()中的参数):
WSADATA wsaData;
::WSAStartup(MAKEWORD(,),&wsaData);
或者写成:
WORD sockVersion = MAKEWORD(2, 2);
WSADATA data;
if (WSAStartup(sockVersion, &data) != 0)
{
return 1;
}
注销函数WSACleanup
::WSACleanup();
或者:
WSACleanup();
socket创建函数
原型:
SOCKET socket(int af, int type, int protocol);//这里定义名称为小写socket
创建TCP套接字:
SOCKET sock = socket(AF_INET, SOCK_STREAM, );
或者:
SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (clientSocket == INVALID_SOCKET){
cout << "Socket error" << endl;
closesocket 关闭函数
closesocket(clientSocket);
其中()中为自己定义的socket名称
实战:
#include<winsock2.h>
#include<iostream>
#include<string>
using namespace std;
#pragma comment(lib, "ws2_32.lib") int main()
{
WORD sockVersion = MAKEWORD(, );
WSADATA data;
if (WSAStartup(sockVersion, &data) != )
{
return ;
}
SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
closesocket(clientSocket); WSACleanup();
return ;
}
结果:

因为只是创建了套接字,关闭套接字,所以程序直接退出
(待续)
Reference
winsocket编程笔记(一)的更多相关文章
- C# 高效编程笔记2
C# 高效编程笔记2 1.理解GetHashCode()的陷阱 (1)作用:作为基于散列集合定义键的散列值,如:HashSet<T>,Dictionary<K,V>容器等 (2 ...
- C# 高效编程笔记1
C# 高效编程笔记1 1.使用属性而不是可访问的数据成员 (1).NET Framework中的数据绑定类仅支持属性,而不支持共有数据成员 (2)属性相比数据成员更容易修改 2.用运行时常量(read ...
- storysnail的Linux串口编程笔记
storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...
- storysnail的Windows串口编程笔记
storysnail的Windows串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据 ...
- DSP28377S - ADC学习编程笔记
DSP28377S - ADC学习编程笔记 彭会锋 2016-08-04 20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...
- C# Socket编程笔记(转)
C# Socket编程笔记 http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html TCP Socket:Server 端连接步骤: ...
- RX编程笔记——JavaScript 获取地理位置
RX编程笔记——JavaScript 获取地理位置 2016-07-05
- Shell编程笔记
Shell编程笔记与Windows下熟悉的批处理类似,也可以将一些重复性的命令操作写成一个脚本方便处理. 修改别人的脚本,运行后遇到个问题 setenv: command not found 查证 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
随机推荐
- 十分钟复习CSS盒模型与BFC
css盒模型与BFC 本文为收集整理总结网上资源 旨在系统复习css盒模型与bfc 节省复习时间 阅读10分钟 什么是盒模型 每一个文档中,每个元素都被表示为一个矩形的盒子,它都会具有内容区.padd ...
- 字符串、bute[]数组和十六进制字符串的相互转换
1.字符串转换成十六进制字符串 public static String str2HexStr(String str) { if (EncodingUtil.isEmpty(str)) { retur ...
- [NodeJS] async 和 await 的本质
绝大多数nodejs程序员都会使用 async 和 await 关键字,但是极少有人能真正弄明白 async 和 await 的原理.这篇文章将从零“构建”出 async 和 await 关 ...
- NLP(二十五)实现ALBERT+Bi-LSTM+CRF模型
在文章NLP(二十四)利用ALBERT实现命名实体识别中,笔者介绍了ALBERT+Bi-LSTM模型在命名实体识别方面的应用. 在本文中,笔者将介绍如何实现ALBERT+Bi-LSTM+CRF ...
- 软件WEB自动化测试工具之智能元素定位
江湖一直有着这么一句名言“天下武功,唯快不破".那么在软件测试领域,自然而然我们会想到软件自动化测试.软件自动化测试的实现自然离不开软件自动化测试工具.软件自动化测试工具是软件自动化的载体, ...
- php里面的一些面试经典的函数
<?php /* 这是一个多线程的读取解决的函数 @param1 $fle 传入要读取的文件名 */ function filelock($fle){ $fp=fopen($fls,'w+'); ...
- C++ 随机函数/伪随机函数
使用rand()函数时,每次随机数都是固定(伪随机数),在前面加上以下函数,每次生成的随机数为随机, srand((int)time(NULL)); rand();
- Mysql 查询天、周,月,季度、年的数据
Mysql 查询天.周,月,季度.年的数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 ...
- Web过滤器和监听器
1.过滤器 1.1什么是过滤器 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...
- wxPython4.0.4关于我们
源码地址:https://download.csdn.net/download/zy0412326/12154342 wxPython4改版后将AboutBox方特到adv包里面.如果想快速实现GUI ...