socket 插座,套接字,插口
readLine
是BufferedReader对象提供的方法
newLine
是BufferedWriter对象提供的方法
服务器:
package one;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTest {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();//判断客户端是否连接上服务器,连接上通过Socket进行相互通信
ServerThread th = new ServerThread(socket);
th.start();//开启线程
/*定义一个邮递员serverSocket,然后邮递员serverSocket把接收到的“东西放进socket袋子中”,
之后开启线程,可以socket.输出流,随后用OutputStreamWriter把字节形式的流转换成
字符流(桥梁的作用),写入文字和字符等 new OutputStreamWriter(socket.getOutputStream())*/
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String message = br.readLine();
System.out.println("读取客户端:"+message);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务器线程:
package one;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class ServerThread extends Thread{
private Socket socket;
public ServerThread(Socket socket) {
super();
this.socket = socket;
}
@Override
public void run() {
Scanner sc = new Scanner(System.in);
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true){
String str = sc.nextLine();
bw.write(str);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
package one;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientTest {
public static void main(String[] args) {
try {
/*获取本地服务器127.0.0.1,端口号为8888.把接收到的“东西放进socket袋子中”,
之后开启线程,可以socket.输出流,随后用OutputStreamWriter把字节形式的流转换成
字符流(桥梁的作用),写入文字和字符等 new OutputStreamWriter(socket.getOutputStream())*/
Socket socket = new Socket("127.0.0.1", 8888);
ClientThread th = new ClientThread(socket);
th.start();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String message = br.readLine();
System.out.println("读取服务器端:"+message);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端线程:
package one;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClientThread extends Thread{
private Socket socket;
public ClientThread(Socket socket) {
super();
this.socket = socket;
}
@Override
public void run() {
Scanner sc = new Scanner(System.in);
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true){
String str = sc.nextLine();
bw.write(str);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}