協議
tcp協議
Socket 類實現客戶端套接字
getOutputStream() 方法,返回此套接字的輸出流
getInputStream() 方法 返回此套接字的輸入流
getIntput
就是獲得一個輸出流,可以發送東西
ServerSocket類,實現服務器套接字
accept方法 監次套接字的連接,
下面寫一個發送端,寫一個監聽器,監聽器啓動後,監聽消息,收到之後 並回復消息,發送端需要接受返回消息
發送端
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class server {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("發送器正在運行");
Socket socket = new Socket(InetAddress.getLocalHost(),16668);
String str = "hello";
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(str);
DataInputStream dis = new DataInputStream(socket.getInputStream());
String str1 = dis.readUTF();
System.out.println(str1);
dos.close();
dis.close();
socket.close();
}
}
監聽器
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.rmi.server.ServerRef;
public class socket {
public static void main(String[] args) throws IOException {
System.out.println("監聽器正在運行:");
ServerSocket server = new ServerSocket(16668);
DataInputStream dis = new DataInputStream(server.accept().getInputStream());
String readUTF = dis.readUTF();
System.out.println(readUTF);
DataOutputStream dos = new DataOutputStream(server.accept().getOutputStream());
dos.writeUTF("test");
dos.close();
dis.close();
server.close();
}
}
UDP 協議
DatagramSocket 用來發送和接受數據包的套接字
DatagramPacket 我的理解他就是用來打包的,發送時,收東西是,需要打包一下
receive()從此套接字接收數據報包,接數據時候經過packet包裝後,接受一下
send()方法從此套接字發送數據包,發送數據經過packet包裝後發送一下
寫一個發送端,發送之後就收返回消息
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class server {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("發送器正在運行");
Socket socket = new Socket(InetAddress.getLocalHost(),16668);
String str = "hello";
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(str);
DataInputStream dis = new DataInputStream(socket.getInputStream());
String str1 = dis.readUTF();
System.out.println(str1);
dos.close();
dis.close();
socket.close();
}
}
寫一個接收端,接收到數據之後並向返回消息
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.SocketPermission;
public class Udp1 {
public static void main(String[] args) throws IOException {
System.out.println("監聽器正在運行");
DatagramSocket socket = new DatagramSocket(15980);
byte [] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
System.out.println(new String(packet.getData()));
String str = "收到了";
byte [] buf1 = str.getBytes();
DatagramPacket packet1 = new DatagramPacket(buf1, buf1.length,InetAddress.getLocalHost(),packet.getPort());
socket.send(packet1);
socket.close();
}
}