ScoketDemo

協議

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();
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章