嘉兴北京网站建设,大地资源影视免费观看,一个人做网站的难度,电暖怎么做网站传输层#xff08;协议#xff09;
TCP协议
三次握手协议保证连接建立
四次挥手#xff0c;利用这个协议断开连接#xff0c;而且保证连接通道里面数据已经处理完毕 客户端#xff08;Socket#xff09;: 1、创建客户端的Socket对象#xff08;Socket#xff09;与指…传输层协议
TCP协议
三次握手协议保证连接建立
四次挥手利用这个协议断开连接而且保证连接通道里面数据已经处理完毕 客户端Socket: 1、创建客户端的Socket对象Socket与指定服务端连接 Scoket(String host,int port) 2、获取输出流写数据 OutputStream getOutputStream() 3、释放资源 void close() 服务器ServerSocket 1、创建服务器端的Socket对象ServerSocket ServerSocket(int port) 2、监听客户端连接返回一个Socket对象 Socket accept() 3、获取输入流读数据并把数据显示在控制台 InputStream getInputStream() 4、释放资源 void close() 三次握手
客户端向服务器发出连接请求等待服务器确认服务器向客户端返回一个响应告诉客户端收到了请求客户端向服务端再次发出确认信息连接建立
四次挥手
客户端向服务区发出取消连接请求服务器向客户端返回一个响应表示收到客户端取消请求服务器向客户端发出确认取消信息客户端再次发送确认信息连接取消
上传文件将文件从客户端上传到服务端接着服务端返回上传成功
//客户端
import java.io.*;
import java.net.Socket;//客户端将本地文件上传到服务器接收服务器的反馈
//服务器接收客户端上传的文件上传完毕后给出反馈
public class Client3 {public static void main(String[] args) throws IOException {//1.创建Socket对象并连接服务器Socket socketnew Socket(127.0.0.1,10000);//2.读取本地文件并写到服务器当中BufferedInputStream binew BufferedInputStream(new FileInputStream(D:\\javaj\\first\\1.jpg));//要复制的文件BufferedOutputStream bonew BufferedOutputStream(socket.getOutputStream());byte[] bytes new byte[1024];int len;while((lenbi.read(bytes))!-1){bo.write(bytes,0,len);}//往服务器写出结束标记socket.shutdownOutput();//3.接收服务器的回写数据BufferedReader brnew BufferedReader(new InputStreamReader(socket.getInputStream()));String linebr.readLine();System.out.println(line);// 4.释放资源socket.close();}}//服务端
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Server3 {public static void main(String[] args) throws IOException {ServerSocket serverSocketnew ServerSocket(10000);Socket socketserverSocket.accept();BufferedInputStream brnew BufferedInputStream(socket.getInputStream());BufferedOutputStream bonew BufferedOutputStream(new FileOutputStream(D:\\aaa.jpg));//粘贴的位置int len;byte[] bytes new byte[1024];while((lenbr.read(bytes))!-1){bo.write(bytes);}BufferedWriter bwnew BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write(上传成功);bw.newLine();bw.flush();socket.close();serverSocket.close();}
}上述代码如果要第二次运行的话上传的文件第二次会把第一次上传的文件覆盖为了避免这种情况可以使用UUID类中的方法
public class UUIDTest {public static void main(String[] args) {System.out.println(UUID.randomUUID());}
}每次运行的结果都是不一样的 3613117c-70f7-4272-9e3e-4c42696721da 但是对于文件名来说不想要上面的 ‘ - ’此时可以换一种写法
先把他替换成字符串再调用里面的replace方法把里面的 “-”替换成长度为零的字符串 “” BufferedOutputStream bonew BufferedOutputStream(new FileOutputStream(D:\\replace.jpg));