Day14:Java网络编程上
网络通信要素
-
ip
-
-
192.168.16.124:5900 //ip:端口号
TCP/IP参考模型

IP
ip地址:java.net.InetAddress
-
127.0.0.1:本机 localhost
-
ABCD类【百度吧】
-
ip地址的分类
-
ipv4/ipv6
-
IPV4 127.0.0.1 4个字节组成;覆盖42亿;30亿都在北美,亚洲4亿;2011年已用尽。
-
IPV6 128位;8个无符号整数;
-
-
公网(互联网)- 私网(局域网)
-
ABCD类地址
-
192.168.xx.xx 专门给组织内部使用的
-
-
-
域名:记忆IP问题!
-
IP:wanwang.aliyun.com
-
InetAddress
InetAddress InetAddress.getByName("127.0.0.1")
InetAddress InetAddress.getByName("localhost")
InetAddress InetAddress.getByName("www.baidu.com")
InetAddress InetAddress.getLocalHost();
端口
-
被规定0~65535
-
单个协议下,端口号不能冲突
-
端口分类
-
共有端口 0~1023
-
HTTP:80
-
HTTPS:443
-
FTP:21
-
Telnet:23
-
-
程序注册端口:1024~49151,分配用户或者程序
-
Tomcat:8080
-
MySQL:3306
-
Oracle:1521
-
-
动态、私有:49152~65535
netstat -ano #查看所有的端口
netstat -ano|findstr "5900" #查看指定的端口
tasklist|findstr "8696" #查看指定端口的进程
Ctrl + shift + esc #打开任务管理器快捷键
-
-
端口映射:C盘 - Windows - System32 - drivers - etc - host -127.0.0.1 “test”
-
InetSocketAddress

通信协议
网络通信协议
速率、传输码率、代码结构、传输控制...
TCP/IP协议簇:实际上是一组协议
IP:网络互连协议
TCP与UDP对比
TCP:打电话
-
连接,稳定
-
三次握手、四次挥手
-
客户端-服务端
-
传输完成,释放连接,效率低
UDP:发短信
-
不连接,不稳定
-
客户端-服务端:没有明确的界限
-
不管有没有准备好,都可以发给你
-
导弹
-
DDOS:洪水攻击!(饱和攻击)
TCP
写两个类
客户端
1.连接服务器Socket
2.发送消息
package test;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestClient {
public static void main(String[] args) {
InetAddress serverIp = null;
Socket socket = null;
OutputStream os = null;
int port = 6426;
try {
serverIp = InetAddress.getByName("127.0.0.1");
socket = new Socket(serverIp, port);
os = socket.getOutputStream();
os.write("收到没啊服务器!".getBytes());
} catch (Exception e) {
e.printStackTrace();
}finally{
if(os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
服务端
1.建立服务端的端口 ServerSocket
2.等待用户的链接 accept
3.接收用户的消息
package test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServer {
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(6426);
Socket accept = serverSocket.accept();
InputStream is = accept.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
byte[] buffer = new byte[1024];
int len;
while ((len=is.read(buffer))!=-1){
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}

浙公网安备 33010602011771号