tomcat网络连接的实例
sock套接字的原理
socket编程是一门技术,它主要是在网络通信中经常用到 ,既然是一门技术,由于现在是面向对象的编程,一些计算机行业的大神通过抽象的理念,在现实中通过反复的理论或者实际的推导,提出了抽象的一些通信协议,基于tcp/ip协议,提出大致的构想,一些泛型的程序大牛在这个协议的基础上,将这些抽象化的理念接口化,针对协议提出的每个理念,专门的编写制定的接口,与其协议一一对应,形成了现在的socket标准规范,然后将其接口封装成可以调用的接口,供开发者使用
目前,开发者开发出了很多封装的类来完善socket编程,都是更加方便的实现刚开始socket通信的各个环节,所以我们首先必须了解socket的通信原理,只有从本质上理解socket的通信,才可能快速方便的理解socket的各个环节,才能从底层上真正的把握
TCP协议
TCP/IP协议不同于iso的7个分层,它是根据这7个分层,将其重新划分,好比打扫卫生,本来有扫帚,垃圾斗,抹布,涂料,盆栽等就好比OSI的标准几个分层,tcp/ip根据用途和功能,将扫帚,垃圾斗放到粗略整理层,抹布涂料放到中度整理层,盆栽放到最终效果层
TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU
tomcat编程实例函数方法
ServerSocket server = new ServerSocket(80);
在这里插入代码片
创建套接字80端口连接
Socket clientSocket = server.accept();
在这里插入代码片
等待连接,
1
建立服务器与客户端的连接
1.1
创建服务器
public static void main(String[] args) {
// 创建socket对象
try {
ServerSocket server = new ServerSocket(80);
while (true) {
// 等待连接请求
Socket clientSocket = server.accept();// 阻塞
System.out.println(clientSocket.getRemoteSocketAddress());
// 建立连接之后开始通讯
OutputStream os = clientSocket.getOutputStream();// 向网卡写入数据
InputStream in = clientSocket.getInputStream();// 从网卡读取数据
//字符流读取数据
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = br.readLine()) != null&&line.length()>0) {
System.out.println(line);
}
//发送数据,发送字符流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write("连接成功\r\n");
bw.write("\r\n");
bw.flush();// flush将缓存的内容写入流
os.close();
in.close();
clientSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这里插入代码片
1.2创建客户端
public class Client {
public static void main(String[] args) {
try {
Socket client = new Socket("10.0.18.69", 80);
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write("你好\r\n");
bw.write("\r\n");
bw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = br.readLine()) != null && line.length() > 0) {
System.out.println("服务器:" + line);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这里插入代码片