建立简单的套接字

最近发现学计算机的真的要好好做笔记啊。。。前两天有个学长的聊天工具我是知道没有初始化套接字,可是一时竟然忘记了加载版本库的那几行代码,真是汗。。。硬是回来看自己的程序才知道。。。

今晚复习了一下套接字的建立

有服务端和客服端两个部分

服务端的步骤一般为

1、初始化套接字版本

 1    //初始化版本
 2     WSADATA wsadata;
 3     WORD ver=MAKEWORD(2,2);
 4     int err;
 5     if((err=WSAStartup (ver,&wsadata))=!0)
 6     {
 7         return ;
 8     }
 9     if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wVersion)!=2)
10     {
11         WSACleanup();
12         return;
13     }

2、创建套接字

3、绑定

4、监听

5、接收

具体代码如下:

 1 #include<iostream>
 2 #include<afx.h>
 3 #include<winsock.h>
 4 int main()
 5 {
 6     //初始化版本
 7     WSADATA wsadata;
 8     WORD ver=MAKEWORD(2,2);
 9     int err;
10     if((err=WSAStartup (ver,&wsadata))=!0)
11     {
12         return ;
13     }
14     if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wVersion)!=2)
15     {
16         WSACleanup();
17         return;
18     }
19 
20     SOCKET sever;
21     sever=socket(AF_INET,SOCK_STREAM,0);
22     SOCKADDR_IN sever_in;
23     sever_in.sin_family=AF_INET;
24     sever_in.sin_port=htons(1024);
25     sever_in.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
26     bind(sever,(SOCKADDR*)&sever_in,sizeof(sever_in));
27     listen(sever,2);
28     
29 
30     SOCKET client;
31 
32 
33     client=accept(sever,0,0);
34     if(client==INVALID_SOCKET)
35     {
36         std::cout<<"连接失败!"<<std::endl;
37     }
38     
39     else
40         std::cout<<"连接成功!"<<std::endl;
41     return 0;
42 }

客户端代码:

 1 #include<iostream>
 2 #include<afx.h>
 3 #include<winsock.h>
 4 int main()
 5 {
 6     WSADATA  wsdata;
 7     WORD ver=MAKEWORD(2,2);
 8     int err;
 9     if((err=WSAStartup (ver,&wsdata))=!0)
10     {
11         return 0;
12     }
13     if(LOBYTE(wsdata.wVersion)!=2||HIBYTE(wsdata.wVersion)!=2)
14     {
15         WSACleanup();
16         return 0;
17     }
18     SOCKET client;
19     client=socket(AF_INET,SOCK_STREAM ,0);
20     SOCKADDR_IN client_in;
21     client_in.sin_family=AF_INET;
22     client_in.sin_port=htons(1024);
23     client_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
24     if(connect(client,(SOCKADDR*)&client_in,sizeof(client_in))==0)
25     {
26         std::cout<<"连接成功"<<std::endl;
27     }
28     return 0;
29 }

 

就可以连上了

转载于:https://www.cnblogs.com/newworldcom/p/3484660.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对KVC和KVO的理解

对KVC和KVO的理解 对KVC和KVO的理解 kvc kvo KVC KVC是KeyValueCoding的简称&#xff0c;它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。 KVC实例 一个对象拥有某些属性。比如说&#xff0c;一个Person对象有一个name和一个…

Natasha 4.0 探索之路系列(一) 概况

简介Natasha 是一个基于 Roslyn 的动态编译类库&#xff0c;它以极简的 API 完成了动态编译的大部分功能&#xff0c;使用它可以在程序运行时编译出新的程序集。Natasha 允许开发人员直接使用 C# 代码即可编写运行时的功能&#xff0c;避免了 Emit 的学习、开发、维护的成本。N…

相信应该有百分九十的男生看见这个东西是这个状态吧?

1 8400亿人民币是什么概念&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 神奇的翻译&#xff08;素材来源豆瓣&#xff0c;侵删&#xff09;▼3 医生为什么喜欢把手背在后面呢&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 …

postman安装_Postman插件的应用与实战(二)

在postman插件的应用与实战(一)中&#xff0c;介绍了postman插件的安装&#xff0c;使用&#xff0c;collestion的创建以及应用&#xff0c;本小节中&#xff0c;我们来介绍postman结合newman和jenkins持续构建工具&#xff0c;来对postman中的接口测试进行统一的管理。关于new…

struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式

本文演示了JSP中获取HTTP参数的几种方式&#xff0c;还有action中获取HTTP参数的几种方式。 1. 创建JSP页面&#xff08;testParam.jsp&#xff09; <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% page isELIg…

HTTP—缓存

1. ETag HTTP 1.1中引入了ETag来解决缓存的问题。ETag全称是Entity Tag&#xff0c;由服务端生成&#xff0c;服务端可以决定它的生成规则。如果根据文件内容生成散列值。那么条件请求将不会受到时间戳的改动造成带宽浪费。下面是根据内容生成散列值的方法&#xff1a; 1 var g…

python3随记——字符编码

1.1什么是字节 字节&#xff08;Byte&#xff09;是计算机信息技术用于计量存储容量的一种计量单位&#xff0c;也表示一些计算机编程语言中的数据类型和语言字符。 比特&#xff08;bit&#xff09;在计算机中最小的单位&#xff0c;在二进制位的电脑的系统中&#xff0c;每一…

数据结构之线性查找和折半查找

1、线性查找 比如字符串 char s[] = "chenyu"; 如果我们是线性查找的话,就是从字符‘c’依次到字符串结尾‘u’查找 2、折半查找 注意查找之前必须是有序的 比如整形数组 int a[10] = {1, 2, 7, 9, 10}; 查找数字2 我们可以定义 首和尾巴,拿需要查找的数据和…

盖茨被逐出微软董事会真相曝光:长期跟员工搞地下情,27年婚姻中出轨不断,人设已崩...

全世界只有3.14 % 的人关注了爆炸吧知识转自&#xff1a;量子位作者&#xff1a;梦晨 鱼羊2020年3月&#xff0c;在比尔盖茨辞去微软董事会职务的时候&#xff0c;人们都在感慨一代互联网大拿&#xff0c;纷纷都到了交接班的时候。万万没想到&#xff0c;一年多之后&#xff0c…

Natasha 4.0 探索之路系列(二) 「域」与插件

域与ALC在 Natasha 发布之后有不少小伙伴跑过来问域相关的问题&#xff0c;能不能兼容 AppDomain、如何使用 AppDomain、为什么 CoreAPI 阉割了 AppDomain 等一系列的问题。今天答复一下&#xff1a;首先 AppDomain 作为程序集隔离容器的存在&#xff0c;是风靡了 .NET Framewo…

cake fork什么意思_Java7任务并行执行神器:Forkamp;Join框架

Fork/Join是什么&#xff1f;Fork/Join框架是Java7提供的并行执行任务框架&#xff0c;思想是将大任务分解成小任务&#xff0c;然后小任务又可以继续分解&#xff0c;然后每个小任务分别计算出结果再合并起来&#xff0c;最后将汇总的结果作为大任务结果。其思想和MapReduce的…

php xml常用函数的集合及四种方法

1、DOM 函数 a、DOMDocument->load()作用&#xff1a;加载xml文件用法&#xff1a;DOMDocument->load( string filename )参数&#xff1a;filename&#xff0c;xml文件&#xff1b;返回&#xff1a;如果成功则返回 TRUE&#xff0c;失败则返回 FALSE。 b、DOMDocument-&…

linux C语言之called object ‘maze’ is not a function or function pointer printf(“%d\t“, maze(i, j))

今天写广度优先搜索的时候出现了这个问题&#xff0c; 解决办法&#xff1a; 特么我傻逼了&#xff0c;明显是数组&#xff0c;我写成了mate(i, j),然后我改了写成了mate[i, j]; 特么我又傻逼了 改成mate[i][j] 就可以了

drozer

安装drozer 1. 准备环境 1&#xff09;JRE / JDK 2) Android SDK 3) Python 2.7 Path, abd和java的环境变量 2. windows 下 安装drozer drozer-installer-2.3.3.zip adb install agent.apk //drozer agent 启动服务端口 adb forward tcp:31415 tcp:31415drozer.bat co…

Greenplum 数据库架构分析

Greenplum 数据库是最先进的分布式开源数据库技术&#xff0c;主要用来处理大规模的数据分析任务&#xff0c;包括数据仓库、商务智能&#xff08;OLAP&#xff09;和数据挖掘等。自2015年10月正式开源以来&#xff0c;受到国内外业内人士的广泛关注。本文就社区关心的Greenplu…

Blog.Core高级进阶:共赴五年之约

读书破万卷&#xff0c;下笔如有神。佳著荐大家马上新年好呀&#xff0c;还有七天就是春节了&#xff0c;2022年是真真正正的到来了&#xff0c;老张打算在新的一年里&#xff0c;继续为开源社区做贡献&#xff0c;Blog.Core开源项目也正式进入第五个年头了&#xff0c;是时候作…

stringredistemplate设置过期时间_Redis的过期删除策略和内存淘汰机制

Redis的key可以设置过期时间&#xff0c;那是否意味着时间一到就会马上被删除呢&#xff1f;Redis的数据存储大小是有限的&#xff0c;假如内存不足Redis有什么应对策略呢&#xff1f;本篇文章将介绍一下Redis的过期策略和内存淘汰机制。1、redis的过期策略1.定时删除在设置key…

linux之怎么使vim永久显示行号

1、进入当前用户目录 2、输入下面命令 vim ~/.vimrc 3、退出保存 :x 4、用vim打开文件验证

java.util.ConcurrentModificationException异常

2019独角兽企业重金招聘Python工程师标准>>> <p> 今天遇到了一个小bug&#xff0c;在对ArrayList操作时出现了java.util.ConcurrentModificationException异常。原来是arrary在遍历时&#xff0c;是不能删除其中的对象的。 for(MediaFeedData item : Item…