java基础之Socket编程概述以及简单案例
概述:
用来实现网络互连的 不同的计算机上 运行的程序间 可以进行数据交互 也就是用来在不同的电脑间, 进行数据传输.
三大要素:
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编程概述以及简单案例的更多相关文章
- Java基础教程——Socket编程
Socket通常也称作"套接字",用于描述IP地址和端口,可以用来实现不同虚拟机或不同计算机之间的通信. --百度百科 套接字允许应用程序插入到网络中,并与插入到网络中的其他应用程 ...
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- 读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 读懂Java中的Socket编程(转)
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 黑马程序员:Java基础总结----网络编程
黑马程序员:Java基础总结 网络编程 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...
- Python 基础之socket编程(二)
Python 基础之socket编程(二) 昨天只是对socket编程做了简单的介绍,只是把socket通信的框架搭建起来,要对其中的功能进行进一步的扩充,就来看看今天的料哈! 一.基于tcp的套接字 ...
- python基础之socket编程 (转自林海峰老师)
python基础之socket编程 阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...
- 使用socket编程实现一个简单的文件服务器
使用socket编程实现一个简单的文件服务器.客户端程序实现put功能(将一个文件从本地传到文件服务器)和get功能(从文件服务器取一远程文件存为本地文件).客户端和文件服务器不在同一台机器上. pu ...
- java中的socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
随机推荐
- Arcgis for Javascript实现两个地图的联动
今天在看天地图的时候,有一个多时相的地图显示功能,感觉很好玩,作为技术控的我晚上十点下班到家便是快十一点了,本来应该是睡觉了,但是,激动地心情不能平静,哎,算了,本着不熬夜的程序员不是好程序员的原则, ...
- 自定义View实战--实现一个清新美观的加载按钮
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在 Dribble 上偶然看到了一组交互如下: 当时在心里问自己能不能做,答案肯定是能做的,不过我比较懒,觉得中间那个伸缩变化要编写 ...
- 51nod 1011 最大公约数GCD
输入2个正整数A,B,求A与B的最大公约数. 收起 输入 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) 输出 输出A与B的最大公约数. 输入样例 30 105 输出 ...
- matlab数据流仿真和时间流仿真
simulink 使用的动态系统仿真,仿真需要求状态方程和输出方程,关键是求状态方程,而状态方程的求解有多种算法,可变步长和定步长,所以仿真时对求解器的选择和步长的设置就比较重要. 所谓基於数据流的仿 ...
- Sqlite数据库中的事务
public void testTrasaction() throws Exception{ PersonSQLiteOpenHelper helper = new PersonSQLiteOpen ...
- nginx config的多个config配置
在我们的一台服务器上,一个nginx服务器下面可能跑着许多许多的项目; 那么就需要配置多个对应的配置 端口号 已经文件入库目录等等 那么项目多了以后,把这些项目都写到一个文件里 到后期难以查看与管理 ...
- 上一步是硬件描述语言,下一步是FPGA
上一步是硬件描述语言,下一步是FPGA. 学习了硬件描述语言(Verilog或者VHDL)之后,FPGA该如何继续. 世上没有捷径,每一步都得踏踏实实的走.学习FPGA也是这样,在有了硬件描述语言的基 ...
- 【转】Apache JMeter web性能测试实例
Apache JMeter是可以对利用HTTP或FTP服务器的应用程序进行测试的工具.它是基于Java的,通过所提供的API它还具有高度可扩展性.典型的JMeter测试包括创建循环和线程组.循环使用预 ...
- 融云rongCloud聊天室的使用
融云提供了两种途径的接口, 一个是app端,一个是服务器端的. app端 1.连接融云,监听消息 rong = api.require('rongCloud2'); rong.init(functio ...
- python使用pika链接rabbitmq Connection reset by peer 解决办法
记录一下, 最近在用机器学习打算做一个Rest API, 数据存入mongo,任务采用消息队列,rabbitmq 由于引擎采用python编写,所以WEB也直接打算用python编写了,比较省事. W ...