1、IP的转换

  1)正转换  

    结构 sockaddr_in 在C++ 中表明一个IP地址结构,包含地址家,端口以及IP地址等信息

    如:

    sockaddr_in addr;
    addr.sin_family = AF_INET;    //指定地址家族 AF_INET 表明是TCP/IP 协议
        addr.sin_port = htons(1230);    //指定端口

    //在设置地址时,需要将点十进制地址转换为网络直接顺序

    //在较早时使用函数 inet_addr 进行转换

    //较新版本中,可以使用新函数 inet_pton 进行转换:

    int rnum = inet_pton(AF_INET,"127.0.0.1", &addr.sin_addr);

    使用 inet_pton 转化时,第一个参数为地址族,第二个参数为欲转换的点十进制IP,转换结果保存在第三个参数中,返回值 rnum ,转换成功时返回一个正数。

    if (rnum > 0 )

    {

      Printf ("转换成功!");

    }

  2)逆转换

    也可以将网络字节顺序反转化为点十进制地址

    使用函数 inet_ntop

    char ipStr[20];

    inet_ntop(AF_INET,(void*)&addr.sin_addr,ipStr,sizeof(addr));

    将转化结果保存到 ipStr (为 char* 也就是字符串)中。

2、套接字 socket 的绑定

   1)创建套接字

    CSocket Sokt;

   2)套接字的绑定

    创建套接字后,需要将其绑定到特定的IP及端口,才能使用该套接字。

    套接字的绑定 BOOL Sokt.Bind((SOCKADDR*)lpAddr,int len)

    其中 lpAddr 为地址结构(类型为 SOCKADDR*),len 为地址结构长度

    则地址绑定可以写为

    Sokt.Bind((SOCKADDR*)addr,sizeof(addr));

    注:

      在绑定中 SOCKADDR 也表示地址结构,它与 sockaddr_in 的区别在于,sockaaddr_in 用于储存地址信息,而 SOCKADDR 是在使用过程中的类型(如函数传递时的参数),至于为什么这么设计,战术还没弄明白……感觉挺闹心的,在传递参数时直接将 sockaaddr_in 转换为 SOCKADDR即可。

   3)监听和链接

     在套接字绑定到特定IP和端口后,对于

     服务器端,需要使用 Listen 进行监听;客户端 则可以 使用Connect 链接服务器

     //服务器监听

     Sokt.Listen(5); //参数 5 表示同时监听的链接数,取值范围 1~5,,默认为 5

     //客户端链接

     Sokt.Connect((SOCKADDR*)&addr, sizeof(addr))

这样,客户端与服务器之间的链接就建立了,接下来需要做的就是怎么样在服务端与客户端通信(数据的传输)

C++ Socket学习记录 -1的更多相关文章

  1. C++ Socket学习记录 -2

    WinSock TCP 编程流程 TCP通信,就像是固定电话,首先是要安装基站,然后是将电话号绑定到电话,然后拨号,接通之后说事,完事之后还要挂电话(甭管谁先挂). 1.初始化环境 使用函数 int ...

  2. C++ Socket学习记录 -3

    WinSocket套接字之间的数据传输 在客户端和服务端建立链接后,接着就是在套接字之间传输数据. 很简单的使用 recv 接收数据,用send发送数据,单但是出现一个问题,不管接收还是发送,数据都是 ...

  3. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  4. zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP

    阅读zeromq guide的一些学习记录 zeromq官方例子 在VC下运行会有些跨平台的错误 我这里有做修改 稍后会发布出来 相关的代码与库  http://download.zeromq.org ...

  5. Java 8 学习记录

    Java 8 学习记录 官方文档 https://docs.oracle.com/javase/8/ https://docs.oracle.com/javase/8/docs/index.html ...

  6. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  7. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  8. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  9. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

随机推荐

  1. accp8.0转换教材第9章JQuery相关知识理解与练习

    自定义动画 一.单词部分: ①animate动画②remove移除③validity有效性 ④required匹配⑤pattern模式 二.预习部分 1.简述JavaScript事件和jquery事件 ...

  2. Error creating document instance

    Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 52; columnNumbe ...

  3. Newtonsoft.Json输出JSON 时动态忽略属性

    一,前言 最近做项目采用Json形式和其他客户端交互,借助于Newtonsoft.Json . 由于业务场景不同,输出的Json内容也不同.要想忽略的属性,可以借助Newtonsoft.Json的特性 ...

  4. 微信小程序的登陆流程详解

    由于小程序的登陆和登陆状态维护流程比较复杂,需要客户端和服务器的数次交互以及服务器端的相应处理,很多同学都觉得比较麻烦,所以特别写下这篇博客为大家梳理一下微信的登陆流程,同时加深对微信小程序与登陆状态 ...

  5. js里面的垃圾回收

    在公司经常会听到大牛们讨论时说道内存泄露神马的,每每都惊羡不已,最近精力主要用在了Web 开发上,读了一下<JavaScript高级程序设计>(书名很唬人,实际作者写的特别好,由浅入深)了 ...

  6. 中缀表达式变后缀表达式、后缀表达式(逆波兰)求值(python版本)

    定义: 中缀表达式: 在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表达式 后缀表达式: 又叫逆波兰表达式 ,不包含括号,运算符放在两个运算对象的后面,所有的计算 ...

  7. 51nod_1240:莫比乌斯函数

    题目链接 面向题意编程.. #include<bits/stdc++.h> using namespace std; typedef long long LL; int cal(int n ...

  8. 采用HTML5之"data-"机制自由提供数据

    周末总是过得很快,又到了跟代码亲密接触的日子,我在北京向各位问好,今天我分享一点关于前端的东西,HTML5之标签"data-*"自定义属性的值传递. 在过去学习JavaScript ...

  9. (转)OGNL表达式介绍

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...

  10. HDU 6034---Balala Power!(搜索+贪心)

    题目链接 Problem Description Talented Mr.Tang has n strings consisting of only lower case characters. He ...