* 客户端
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost",1234);
PrintWriter pw = new PrintWriter(socket.getOutputStream());
BufferedReader back = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"GBK"));) { //"GBK"防止乱码
//Socket socket = new Socket("192.168.16.105", 1234);
//Socket socket = new Socket(InetAddress.getLocalHost(),1234);
//Socket socket = new Socket("127.0.0.1",1234);
while (true) {
System.out.println("您说:");
String content = br.readLine(); //接收键盘输入
pw.println(content);
pw.flush(); //刷新
String echo = back.readLine();
System.out.println(echo);
if ("over".equals(content)) {
break;
}
}
//pw.println("hello");
} catch (IOException ex) {
}
}
}
/*
* 服务器端TCP
主要用到API:java.net.ServerSocket和java.net.Socket
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) {
System.out.println("正在启动服务器···");
try (ServerSocket serverSocket = new ServerSocket(1234);){ //端口号为1234
System.out .println("正在监听客户端连接请求·····");
try (Socket socket = serverSocket.accept(); //阻塞,等待客户端的连接要求
//InputStream is = socket.getInputStream ();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());
){
String content = "";
while((content = br.readLine()) != null){
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/*
* 多线程服务器端TCP
主要用到API:java.net.ServerSocket和java.net.Socket
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
class TCPServerThread extends Thread {
private Socket socket;
TCPServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try (BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());) {
String content = "";
while ((content = br.readLine()) != null) {
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class TCPServer2 {
public static void main(String[] args) {
System.out.println("正在启动服务器···");
try (ServerSocket serverSocket = new ServerSocket(1234);) { //端口号为1234
System.out.println("正在监听客户端连接请求·····");
Socket socket = serverSocket.accept();
new TCPServerThread(socket).start();
/*try (Socket socket = serverSocket.accept(); //阻塞,等待客户端的连接要求
//InputStream is = socket.getInputStream ();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());
){
String content = "";
while((content = br.readLine()) != null){
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
}
*/
} catch (IOException ex) {
ex.printStackTrace();
}
}
}