JAVASE学习笔记-------菜鸟成长之路之网络编程篇
练习了两个实例TCP聊天系统与TCP文件互传系统
个人见解:
TCP三次握手:
A:请求建立连接
B:确认建立连接
A:再次确认建立连接
TCP四次挥手:
A:请求断开连接
B:确认断开连接
B:再次确认是否断开连接
A:回复断开连接
TCP聊天系统客户端代码
基本实现思路四步
1.获取服务器的地址,端口号
2,创建一个socket连接
3.发送消息Io流
4.关闭所有流
public class TcpClientDemo01 {
public static void main(String[] args) {
Socket socket=null;
OutputStream os=null;
try {
//1.要知道服务器的地址,端口号
InetAddress serverIp=InetAddress.getByName("127.0.0.1");
int port=9999;
//2.创建一个socket连接
socket=new Socket(serverIp,port);
//3.发送消息 Io流
os=socket.getOutputStream();
os.write("helloworld".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();
}
}
}
}
}
TCP聊天系统服务端
基本实现思路四步
1.new一个地址
2,等待客户端socket连接(建立阻塞监听)
3.读取客户端的消息
4.关闭所有流
//服务端
public class TcpServerDemo02 {
public static void main(String[] args) {
ServerSocket serverSocket =null;
Socket socket =null;
InputStream is =null;
ByteArrayOutputStream baos =null;
try {
//1.我得有一个地址
serverSocket = new ServerSocket(9999);
//2.等待客户端连接过来
socket = serverSocket.accept();
//3.读取客户端的消息
is = socket.getInputStream();
//管道流
baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1)
{
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭至语言
if (baos!=null) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is!=null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (serverSocket!=null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}