1.1概述
TCP:打电话 连接、通话
UDP:发短信 发完就完事了 接收
-
如何定位一个网络上的一台主机:ip地址:端口 定位到这个计算机上的某个资源
-
硬件连接 有线、无线
网页编程 javaweb B/S
网络编程 TCP/IP C/S
1.2网络通信的要素
如何实现网络的通信?
- 如何如何定位网络上的一台或多台主机
- 找到主机如何通信
通信双方地址:
- ip
- 端口号
规则:网络通信的协议 TCP、UDP
1.3 IP
ip地址:InetAddress
-
127.0.0.1 本机localhost
-
ip地址分类
-
ipv4/ipv6
-
ipv4 :127.0.0.1 4个字节组成 42亿 亚洲4亿
-
ipv6 8个无符号整数 128位
1238:abcd:9291:cccc:2819:abcd:7478:bdec
-
-
公网-互联网 私网-局域网
- ABCD类地址
- 192.168.xx.xx专门给组织内部使用
-
InetAddress inetAddress1 = InetAddress.getByName("www.baidu.com");
//getHostName获取域名
//getHostAddress获取ip
1.4端口
端口表示计算机中一个程序的进程
-
不同的进程有不同的端口号,用来区分软件
-
规定为0~65536
-
TCP ,UDP 单个协议下端口号不能相同
-
端口分类
-
公有端口0~1023
- HTTP:80
- HTTPS:443
- FTP:21
- Telent:23
-
程序注册端口
- Tomcat:8080
- Mysql: 3306
- Oracle:1521
-
动态、私有端口:49152~65535
netstat -ano netstat -ano |findstr "5900" 查找进程
-
1.5通信协议
TCP/IP协议 传输层
- TCP:用户传输协议
- 连接 稳定
- 三次握手 四次挥手
- 客户端、服务端
- 传输完成 释放连接 效率低
- UDP:用户数据报协议
- 不连接 不稳定
- 客户端、服务端 :没有明确的界定
- 不管有没有准备好,都可以发给你
1.6TCP
//客户端
public class C{
psvm{
//获取ip地址 端口号
InetAddress c = InetAddress.getByName("127.0.0.1");
int port=9999;
//创建socket连接
Socket socket = new Socket(c,port);
//发送消息
OutputStream os = socket.getOutStream();
os.write("你好hahaha".getButes());
//关闭资源 io流 scoket资源
}
}
//服务端
public class S{
psvm{
try{
//1.创建地址
ServerSocket s = new ServerSocket("9999");
//2.等待连接
Socket socket = serverSocket.accept();
//3.获取服务端消息
InputStream is =socket.getInputStream();
//管道流
ByteArratOutputStream baos = new ByteArratOutputStream();
byte[] = buffer = new byte[1024];
int len;
while((len=is.read(buffer))!=-1){
baos.write(buffer,0,len);
}
System.out.println(baods.toString());
//关闭资源 先开的后关
}catch
}
}
上传文件
class C {
psvm{
//创建一个连接
Socket socket = new Socket(InetAddresss.getByName("127.0.0.1"),9999);
//获取输出流
OutputStream os = socket.getOutputStream();
//获取文件流
FileInputStream fis = new FileInputStream(new File("3/txt"));
//写出文件
byte[] buffer = new byte[1024];
int len;
while((len=fis.read(buffer))!=-1){
os.write(buffer,0,len);
}
//关闭资源
fis.close();
os.close();
socket.close();
}
}
class S{
psvm{
//创建服务
ServerSokcet serverSocket = new ServerSokcet();
//等待连接 阻塞式等待 会一直等待直到客户端连接
Socket socket = serverSocket.accept();
//获取输入流
InputStream is = socket.getInputStream();
//文件输出
FileOutputStream fos = new FileOutputStream(new File("recesive.txt"));
byte[] buffer = new byte[1024];
int len;
while((len=fos.read(buffer))!=-1){
fos.write(buffer,0,len);
}
//关闭资源
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}
待更新