概述:
  用来实现网络互连的 不同的计算机上 运行的程序间 可以进行数据交互  也就是用来在不同的电脑间, 进行数据传输.

三大要素:
  IP地址: 设备(电脑,手机,ipad)在网络中的唯一标识.
    组成: 网络(网关)号码 + 主机地址. //192.168.162.86
    分类:
      城域网: 1 + 3
      广域网: 2 + 2
      局域网: 3 + 1 //192.168.0. + 1

  两个特殊的IP:
    127.0.0.1: 本地回环(回路)地址, 在哪台电脑上写这个ip, 它就标识哪个电脑.
    255.255.255.255: 广播地址.

  String类型字符串和IP互相转换:

        //字符串IP    -->  IP地址对象
InetAddress inet = InetAddress.getByName(ip);//IP地址对象 --> String类型的ip
String ip2 = inet.getHostAddress();

端口号:

  程序在设备(电脑,手机,ipad)上的唯一标识  范围: 0 ~ 65535

  注意事项:
    其中0~1024号段已经被占用了或者用作保留端口, 我们自定义端口号的时候要避开这个范围.

协议:     //设备间进行数据交互的 规则.
  UDP协议:
    1. 不需要建立连接.
    2. 采用数据报包的形式发送数据, 每个包的大小不能超过64KB.
    3. 不安全(不可靠)协议.
    4. 效率相对来讲较高.
    5. 不区分客户端和服务器端, 叫: 发送端和接收端.

  TCP协议:
    1. 需要建立连接

      三次握手: 1)客户端给服务端发送消息要连接服务端

            2)服务端通过验证后给客户端发送消息允许连接

            3)建立连接通道
    2. 采用IO流发送数据, 理论上来讲数据没有大小限制.
    3. 安全(可靠)协议.
    4. 效率相对来讲较低.
    5. 区分客户端和服务器端.

Socket编程(网络通信)的原理:
  通信两端都独有自己的Socket的对象,
  数据在两个Socket之间通过 数据报包或者IO流的形式进行 传输

简单案例客户端和服务端互发消息:

Client:

public class Client {
public static void main(String[] args) throws Exception {
Socket soc = new Socket("192.168.1.102", 10010);
// 发送
OutputStream os = soc.getOutputStream();
os.write("客户端:我是刘德华".getBytes());
// 接收
InputStream is = soc.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
System.out.println(new String(bys, 0, len));
soc.close();
}
}

Server:

public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ssoc = new ServerSocket(10010);
//监听
Socket accept = ssoc.accept();
//接收
InputStream is = accept.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
//接收到数据
System.out.println(new String(bys, 0, len)); //反馈 OutputStream os = accept.getOutputStream();
os.write("服务端:我是张学友啊".getBytes());
ssoc.close();
}
}

java基础之Socket编程概述以及简单案例的更多相关文章

  1. Java基础教程——Socket编程

    Socket通常也称作"套接字",用于描述IP地址和端口,可以用来实现不同虚拟机或不同计算机之间的通信. --百度百科 套接字允许应用程序插入到网络中,并与插入到网络中的其他应用程 ...

  2. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  3. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  4. 读懂Java中的Socket编程(转)

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  5. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  6. Python 基础之socket编程(二)

    Python 基础之socket编程(二) 昨天只是对socket编程做了简单的介绍,只是把socket通信的框架搭建起来,要对其中的功能进行进一步的扩充,就来看看今天的料哈! 一.基于tcp的套接字 ...

  7. python基础之socket编程 (转自林海峰老师)

    python基础之socket编程   阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...

  8. 使用socket编程实现一个简单的文件服务器

    使用socket编程实现一个简单的文件服务器.客户端程序实现put功能(将一个文件从本地传到文件服务器)和get功能(从文件服务器取一远程文件存为本地文件).客户端和文件服务器不在同一台机器上. pu ...

  9. java中的socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

随机推荐

  1. jgit - java实现git操作

    在做一个项目中需要用到远程仓库,本来想使用svn的,但是svn的java api网上的资料很少,而且与git相比,svn显得笨重且不方便,因此放弃了svn转而使用git.java git api - ...

  2. H5 pattern

    pattern:正则表达式验证 例如: <input pattern="1[3578]\d{9}">  可以省略^和$ 必须和required配合使用,否则在用户没有输 ...

  3. js 下获取子元素的方法

    笔记核心: firstElementChild只会获取元素节点对象,从名称就可以看出来,firstChild则可以获取文本节点对象(当然也可以获取元素节点对象),比如空格和换行都被当做文本节点. js ...

  4. C++11 Lambda表达式(匿名函数)

    http://www.cnblogs.com/RainyBear/p/5733399.html http://blog.163.com/lvan100@yeah/blog/static/6811721 ...

  5. HTML5编写规范

    HTML和CSS编码规范内容 一.HTML规范 二.CSS规范 三.注意事项: 四.常用的命名规则 五.CSS样式表文件命名 六.文件命名规则 一.HTML规范: 1.代码规范 页面的第一行添加标准模 ...

  6. MyEclipse2014快速配置Spring & Spring Testing, Spring AOP简单使用

    1.新建项目 2.右击项目,如图,利用myeclipse自动导入spring 3.在弹出的对话框中一直next到最后,在最后的页面中勾选Spring Testing,完成. 4.在src下的appli ...

  7. WCF *.svc 自定义地址路由映射

    一般在创建WCF服务时会用Serivce.svc文件访问,地址如:http://localhost/applicationname/Serivce.svc/Name 现在用路由映射成:http://l ...

  8. Python 中,字符串"连接"效率最高的方式是?一定出乎你的意料

    网上很多文章人云亦云,字符串连接应该使用「join」方法而不要用「+」操作.说前者效率更高,它以更少的代价创建新字符串,如果用「+」连接多个字符串,每连接一次,就要为字符串分配一次内存,效率显得有点低 ...

  9. C#反射 -- 基础

    两个现实中的例子:1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时 ...

  10. Python 函数 -next()

    next() next() 返回迭代器的下一个项目. iterator - 可迭代对象.  default - 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 St ...