做Socket通信之前,我们首先要实现几个基本的功能

获取本机IP地址(如果我们要做Socket的服务器,肯定不希望用户每次填写本机IP地址,而是自动获取本机IP地址,这一点我们最好能做的比已有的软件更合理,更好用),下面的方法简单实现了获取本机IP地址,后面一个方法还把IPV6的地址也得到了,但是目前还没有什么用处(可能以后用得到)

 

能PING通一个远程的IP地址(如果我们要做Socket的客户端,最好在连接之前能知道目标IP能不能连接上,如果不能PING通,则直接告诉用户网络连接有问题就行了,此外还能做心跳包,比如QQ断线检测,每隔一定时间PING通就认为网络连接正常,否则认为网络有问题,所以这个功能还是比较实用的)

 

能从一个网址解析出他对应的IP地址(这个在自动化领域应用不是很广泛,因为这个行业里面不管是Socket的服务器还是客户端都是一些小设备,IP地址都是自己设置上去的,不会牵扯到某个网址的IP,但是为了把这个类做的比较全,也可以加深对Socket相关类的理解,还是有必要涉及一下,读者至少需要明白其实一个网址就是一个IP地址)

 

了解什么是服务器,什么是客户端(给别人提供服务的就是服务器,享受服务的就是客户端,就像宾馆提供房间,客户才能入住),我们可以先用第三方的软件测试一下(在附件程序中打开SocketTest这个工具,它本身是JAVA写的,但是很短小很精悍,我们本节教程目的也是实现这样一个功能),首先是Server端开启某个Port,然后Client端连接上去,然后就可以互相发消息,当然也可以断开连接等等(要切记首先必须服务器开启服务,客户端才能连接,如果宾馆的某个房间不开放,那客户端就没法进去,至于房间开放,客户进去之后,谁跟谁说话都是可以的)

 

其次要知道Socket通信的意义,因为他是基于以太网的通讯协议,比串口,总线都要简单的多,也好用的多,基本上大部分的工业设备都会支持这个协议,而且不受限于操作系统,微软的,安卓的,Linux,MaxOS的都可以互相发消息。即便是在同一台计算器上,不同软件之间也可以互相通信,所以把这个通信研究好的意义还是很大的(在下面的测试中,我用了一个另外的调试工具跟SocketTest做通讯测试,像这样的网络调试助手网上很容易找到)

 

最后来看一下百度百科对Socket的解释,比较形象(他比喻成插座)

https://baike.baidu.com/item/socket/281150?fr=aladdin

 

 

 

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

 

我的在线论坛:

http://csrobot.gz01.bdysite.com/

 

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

C#应用视频教程1.1 Socket通信基础的更多相关文章

  1. c# Socket通信基础

     一.IP地址操作类   1.IPAddress类 a.在该类中有一个 Parse()方法,可以把点分的十进制IP表示转化成IPAddress类,方法如下: IPAddress address = I ...

  2. C#应用视频教程1.3 Socket通信客户端完善

    我们先把前面的代码封装成一个完整的类,因为跟网络相关的方法并不一定是建立socket的服务器和客户端,所以还是应该把两个分开,比如获取本机IP,修改本机IP,PING远程主机这些事情应该放在一个单独的 ...

  3. C#应用视频教程1.2 Socket通信客户端实现

    接下来我们尝试实现最简单的Socket客户端,为了确保只可能你的代码有问题,服务器要先用别人成熟的代码测试(这也是编程的一个技巧,先不要用自己写的客户端测试自己写的服务器,这样出了问题你也不知道谁有问 ...

  4. socket.io 入门篇(一)

    本文原文地址:https://www.limitcode.com/detail/591b114bb1d4fe074099d9c9.html 前言 本篇介绍使用node.js模块组件socket.io实 ...

  5. socket 网络编程笔记 一

    初始socket模块 Serve端代码 import socket sk = socket.socket() #默认为TCP连接 """socket 里面两个方法 fam ...

  6. HTTP真的很简单

    原文:HTTP Made Really Easy因为我本身网络基础就很差,所以看到这篇文章一方面是学习网络知识,另一方面为了锻炼我蹩脚的英语水平,文中如有错误,欢迎浏览指正! 前言 在看这篇文章的时候 ...

  7. c++ builder xe2 (Embarcadero rad studio) 远程调试 同样适用于 delphi 远程调试 教程

    转载:http://www.cnblogs.com/zhangdongsheng/p/3411056.html 每次要远程调试的时候都要看半天的xe2英文帮助文档,今天正好有点时间,把它写下来. 一. ...

  8. 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录

    iPhone.iPad产品风靡全球,巨大的用户群刺激着iOS软件开发需求,然而国内人才缺口很大,正处于供不应求的状态,ios开发前景大好.我们整理了51CTO下载中心100份热门的ios开发资料,做了 ...

  9. iOS开发人员必看的精品资料(100个)

    目录下载地址:http://down.51cto.com/data/416672 附件预览如下: iOS游戏开发之Unity3D引擎系列 http://down.51cto.com/zt/399 iP ...

随机推荐

  1. 详细理解Java虚拟机的运行过程

    基本概述: Java虚拟机简称JVM,是JRE中的一部分,也是Java程序运行的最关键的部分.完整的Java运行流程大致包括编译.java文件形成.class文件,然后根据.class文件的内容进行一 ...

  2. RE:从零开始的AGC被虐(到)生活(不能自理)

    RE:从零开始的AGC被虐(到)生活(不能自理) 「一直注视着你,似近似远,总是触碰不到.」 --来自风平浪静的明天 AtCoder Grand Contest 001 B: Mysterious L ...

  3. 【贪心+Treap】BZOJ1691-[Usaco2007 Dec]挑剔的美食家

    [题目大意] 有n头奶牛m种牧草,每种牧草有它的价格和鲜嫩度.每头奶牛要求它的牧草的鲜嫩度要不低于一个值,价格也不低于一个值.每种牧草只会被一头牛选择.问最少要多少钱? [思路] 显然的贪心,把奶牛和 ...

  4. pat 素数对猜想

    让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素 ...

  5. 2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索

    邱老师降临小行星 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Des ...

  6. 配置nginx虚拟目录配置文件支持tp的pathinfo

    lnmp自带的包不好用, 经测试,在相应的conf文件加入这句话即可: location / { if (!-e $request_filename) { rewrite ^(.*)$ /index. ...

  7. Raspberry pi,一个好玩的派:第八季 Raspbmc(下)

    上一季安装好Raspbmc就等着这一季好好玩耍呢. 我们要在这一季中完毕例如以下任务:调整分辨率.连接wifi并在无线路由器中设置固定IP.手机遥控Raspbmc.改变语言为中文.远程訪问Raspbe ...

  8. windows系统上安装与使用Android NDK r8d(二)

    四.    在eclipse中集成c/c++开发环境    1. 装Eclipse的C/C++环境插件:CDT,这里选择在线安装.          首先登录http://www.eclipse.or ...

  9. U-Boot中的filesize环境变量

    U-Boot中的环境命令可以使用$(filesize)来确定刚下载(传输)得到的文件大小. 因为使用类似tftp命令传输文件后,会自动更新filesize环境变量.如:setenv updateroo ...

  10. 如何利用Flink实现超大规模用户行为分析

    如何利用Flink实现超大规模用户行为分析   各位晚上好,首先感谢大家参与我的这次主题分享,同时也感谢 InfoQ AI 前线组织这次瀚思科技主题月! 瀚思科技成立于 2014 年,按行业划分我们是 ...