TUP通讯协议
一、原理和思路?
底层基于流,传输建立连接(三次握手),传输可靠(数据完整)但是传输速度慢底层根据流来做数据传输,传输的数据没有大小限制适用场景:聊天、上传和下载等等
二、使用步骤
1.客户端
1.创建TCP客户端
2.发起连接
3.获取自带字节输出流
4.写出数据
5.通知服务器端数据已经写出完毕
6.关流
代码如下(示例):
public class TT {
Socket s;
TT() throws IOException {
s=new Socket("localhost",8080);
System.out.println("客户端");
}
public static void main(String[] args) throws IOException {
TT t=new TT();
t.run();
}
public void run() {
try {
/*发送数据*/
OutputStream oos = s.getOutputStream();
OutputStreamWriter os=new OutputStreamWriter(oos,"UTF-8");
PrintWriter ps=new PrintWriter(os,true);
/*读取数据*/
InputStream in=s.getInputStream();
BufferedReader bs=new BufferedReader(new InputStreamReader(in,"UTF-8"));
String message;
Scanner kh=new Scanner(System.in);
while(true){
String messagek=kh.next();
ps.println(messagek);
message=bs.readLine();
System.out.println("服务端说:"+message);
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
2.服务端
1.创建TCP服务器端(监听端口号)
2.接收连接
3.获取自带字节输入流
4.读取数据
5.通知客户端数据已经接收完毕
6.关流
代码如下(示例):
public class DDD implements Runnable{
ServerSocket server;
DDD() throws IOException {
server=new ServerSocket(8080);
}
public static void main(String[] args) throws IOException {
new Thread(new DDD()).start();
}
@Override
public void run() {
try {
System.out.println("等待客户端连接........");
Socket s = server.accept();
/*读取数据*/
InputStream is = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
/*发送数据*/
OutputStream ou = s.getOutputStream();
BufferedWriter ws = new BufferedWriter(new OutputStreamWriter(ou, "UTF-8"));
PrintWriter ps = new PrintWriter(ws, true);
/*循环读取发送*/
Scanner fw = new Scanner(System.in);
while (true) {
String line = br.readLine();
System.out.println("客户端说:" + line);
/*回复客户端*/
String message = fw.next();
ps.println(message);
}
} catch (IOException E) {
E.printStackTrace();
}
}
}
该处使用的url网络请求的数据。
总结
提示:这是我第一张CSDN,以前根本没有csdn的习惯,文章中有什么错别字,请各位大佬多指教