Java Socket 收發訊息入門例子(學習筆記)+服務端和客戶端互聊(使得服務端也能傳送資料,客戶端也能接受資料,並且可以一直持續下去)
阿新 • • 發佈:2020-12-09
//收發數字
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
//連線到本機的8888埠
Socket s = new Socket("127.0.0.1",8888);
System.out.println (s);
//開啟輸出流
OutputStream os = s.getOutputStream();
os.write(100);
os.close();
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
//服務端開啟埠8888
ServerSocket ss = new ServerSocket(8888);
//在8888埠上監聽,看是否有連線請求過來
System.out.println("監聽在埠號:8888" );
Socket s = ss.accept();
//開啟輸入流
InputStream is = s.getInputStream();
int msg = is.read();
System.out.println(msg);
is.close();
System.out.println("有連線過來" + s);
s.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
==================================================
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client1 {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",8801);
//開啟輸出流
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//使用此句,每次不同的字串,都要修改程式碼
//可使用Scanner在控制檯輸入
// dos.writeUTF("Legendary!");
Scanner sc = new Scanner(System.in);
String str = sc.next();
dos.writeUTF(str);
dos.close();
os.close();
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
//收發字串
public class Server1 {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8801);
System.out.println("監聽埠號:8801");
Socket s = ss.accept();
System.out.println("有連線過來:" + s);
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
String msg = dis.readUTF();
System.out.println(msg);
dis.close();
is.close();
s.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使得服務端也能傳送資料,客戶端也能接受資料,並且可以一直持續下去
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class TestClient {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",8898);
//開啟輸出流
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//開啟輸入流
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
while(true) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
dos.writeUTF(str);
String msg = dis.readUTF();
System.out.println("收到服務端的資訊:" + msg);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.net.Socket;
import java.util.Scanner;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
//服務端和客戶端互聊天
//使得服務端也能傳送資料,客戶端也能接受資料,並且可以一直持續下去
public class TestServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8898);
Socket s = ss.accept();
System.out.println("監聽在埠號:8898");
//開啟輸入流
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
//開啟輸出流
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
while(true) {
String msg = dis.readUTF();
System.out.println("收到客戶端訊息"+msg);
Scanner sc = new Scanner(System.in);
String str = sc.next();
dos.writeUTF(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}