做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. Django 如何实现 如下 联表 JOIN 查询?

    SQL语句: select distinct a.device_hash, sum(b.cmn_merge_count) from (select distinct device_hash from ...

  2. 图论之初,拓扑排序、前向星(通过存储边来存储图)加优先队列对拓扑的优化-----hdu1285

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. Java泛型应用总结

    一.泛型的引入原因 在操作集合的时候,之前方法的定义都是Object类型,向集合中添加对象,都自动向上转型,加入的元素可以是任何类型 但是,在取出元素的时候,通常想要使用对象的特有功能,就必须向下转型 ...

  4. 线段树 求区间连乘——hdu 3074 Multiply game

    Multiply game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  5. 设计模式 -- 桥接模式(Bridge)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------主要内容包括: 初始桥接模式 ...

  6. MyISAM重启之后的一次血泪教训

    最近经历了一次MyISAM重启的血泪教训,小小的故障历经3个小时才全部解决完毕,特此铭记一下,以后坚决防止在同一个地方跌倒两次. 事情的过程: 某日早7点接到几条主库报警,给值班组打电话后得到的消息是 ...

  7. 深入浅出JDBC-快速入门

    一.目录 二.概述 简述 JDBC是什么?JDBC英文名为:Java Data Base Connectivity(Java数据库连接),官方解释它是Java编程语言和广泛的数据库之间独立于数据库的连 ...

  8. mmm-master漂移问题的分析

    date:20140527auth:Jin 一.问题描述线上store应用,偶尔出现慢的现象.检查发现是writer角色在master-backup之前漂移检查mysql-log没有发现异常,也没前端 ...

  9. CentOS下的yum upgrade和yum update区别,没事别乱用,和Ubuntu的update不一样!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!! yum update:升级所有包同时也升级软件和系统内核 yum upgrade:只升级 ...

  10. weblogic清理缓存后重启

    清理缓存步骤如下: 1.前置条件:停止服务 2.找到下面3个目录,然后将里面的文件删除即可: ……/user_projects/domains/base_domain/servers/AdminSer ...