Java网络编程的通信
基于How2J教程进行的练习
更多相关教程分享
发送线程
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class SendThread extends Thread{
private Socket s;
private String name;
public SendThread(Socket s, String name) {
this.s = s;
this.name = name;
}
public void run() {
try {
OutputStream is = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(is);
Scanner sc = new Scanner(System.in);
while(true) {
String msg = sc.next();
dos.writeUTF(msg);
System.out.println(this.name + "发送" + msg);
}
} catch(IOException e) {
e.printStackTrace();
}
}
}
接收线程
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
class ReceiveThread extends Thread{
private Socket s;
private String name;
public ReceiveThread(Socket s, String name) {
this.s = s;
this.name = name;
}
public void run() {
try {
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
while(true) {
String msg = dis.readUTF();
System.out.println(this.name + "接收" + msg);
}
} catch(IOException e) {
e.printStackTrace();
}
}
}
客户端
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String [] args) {
try {
Socket s = new Socket("127.0.0.1", 8888);
new SendThread(s, "客户端发送线程").start();
new ReceiveThread(s, "客户端接收线程").start();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务器端
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String [] args) {
try {
ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
new SendThread(s, "服务器端发送线程").start();
new ReceiveThread(s, "服务器端接收线程").start();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}