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

三大要素:
  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();
}
}

最新文章

  1. curl -w,–write-out参数详解
  2. Tuxedo 超时时间控制(转贴)
  3. TIB自动化测试快讯 - Appium手机自动化测试学习资料精选
  4. github如何pull最新代码
  5. oc 中随机数的用法(arc4random( ) 、random( )、CCRANDOM_0_1( )
  6. 【经验】Windows7、8、8.1 MSI安装错误Error Code 2502 & 2503 解决方法
  7. Matlab中@与函数调用
  8. php引用详解
  9. JQuery 之 Ajax 异步和同步浅谈
  10. PS/2接口
  11. 计算机学院大学生程序设计竞赛(2015’12) 1005 Bitwise Equations
  12. MySQL入门笔记(一)
  13. javaWeb学习总结(8)- JSP中的九个内置对象(4)
  14. 今天遇到了一个Spring出现的一个未知错误,分享下
  15. springboot学习随笔(三):Controller参数映射
  16. U3D 设置帧率与垂直同步
  17. Linux(centos6.5)下安装jenkins
  18. mysql 创建函数问题
  19. OC基础:内存(进阶):retain.copy.assign的实现原理 分类: ios学习 OC 2015-06-26 17:36 58人阅读 评论(0) 收藏
  20. Ubuntu使用tzselect修改时区

热门文章

  1. Could not find a valid gem 'rails' (>= 0), here is why
  2. Unity的Update() 和 FixedUpdate()的区别
  3. go 通过nginx代理后获取用户ip
  4. [leetcode]_Validate Binary Search Tree
  5. bzoj 2131 免费的馅饼
  6. kali视频(21-25)学习
  7. SQl_case when
  8. Kubernetes安装部署演示介绍
  9. his移植问题
  10. FTP文件传输协议两种模式 ftp协议集,错误码集,ftp客户端命令集