新手一枚 不好别噴的太嚴重了
建立 服務端 :
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
*
* @author bigSea
* Socket服務端
*/
public class MyTcpService {
public static void main(String[] args) {
System.out.println("主機啟動。。。");
try {
//建立伺服器,并開放10000端口
ServerSocket server = new ServerSocket(10000);
while(true){
//從連接配接隊列中取出一個連接配接,如果沒有則等待
Socket socket = server.accept();
//啟動線程
new Thread(new ToClientDialog(socket)).start();
System.out.println("用戶端連接配接成功 位址:"+socket.getInetAddress()+" 端口:"+socket.getPort());//接收和發送資料
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ToClientDialog類:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author bigSea
* 向用戶端發送資料
*/
public class ToClientDialog implements Runnable{
private Socket dialogSocket = null;
public ToClientDialog() {
super();
}
//初始化
public ToClientDialog(Socket socket){
dialogSocket = socket;
}
public void run() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (dialogSocket != null) {
BufferedReader in;
PrintWriter out;
try {
//接收
in = new BufferedReader(new InputStreamReader(dialogSocket.getInputStream()));
//輸出
out = new PrintWriter(dialogSocket.getOutputStream(), true);
//擷取使用者輸入
BufferedReader line = new BufferedReader(new InputStreamReader(
System.in));
while(true){
//接收用戶端發送來的資料
String msg = in.readLine();
if (msg.equals("end")) {
break;
}
System.out.println(sdf.format(new Date()) + " client:" + msg);
//向用戶端發送使用者輸入的資料
out.println(line.readLine());
}
line.close();
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
用戶端代碼:
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* @author bigSea
* Socket 服務端
*/
public class MyTcpClient {
public static void main(String[] args) {
System.out.println("客戶機啟動。。。");
Socket socket;
try {
//連接配接主機位址。
socket = new Socket("192.168.72.175", 10000);
//啟動
new Thread(new ToServiceDialog(socket)).start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ToServiceDialog代碼:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author bigSea
* 向服務端發送資訊
*/
public class ToServiceDialog implements Runnable {
private Socket dialogSocket = null;
public ToServiceDialog(){
}
//初始化
public ToServiceDialog(Socket socket){
dialogSocket = socket;
System.out.println("連接配接"+socket.getInetAddress().getHostName()+"主機成功");
}
public void run() {
BufferedReader in;
PrintWriter out;
BufferedReader line;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (dialogSocket != null) {
try {
//接收
in = new BufferedReader(new InputStreamReader(
dialogSocket.getInputStream()));
//輸出
out = new PrintWriter(dialogSocket.getOutputStream(), true);
//擷取使用者輸入
line = new BufferedReader(new InputStreamReader(
System.in));
while(true){
//接受控制台輸入的資料
String sendMsg = line.readLine();
//向服務端發送資料
out.println(sendMsg);
if (sendMsg.equals("end")) {
break;
}
//接收服務端發送來的資料
String msg = in.readLine();
System.out.println(sdf.format(new Date()) + " service:" + msg);
}
line.close();
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
示範效果: