-
package TCP;
-
import java.io.BufferedReader;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import java.io.PrintWriter;
-
import java.net.ServerSocket;
-
import java.net.Socket;
-
import java.util.Scanner;
-
/**
-
* 发送消息线程
-
*/
-
class Send extends Thread{
-
private Socket socket;
-
public Send(Socket socket){
-
this.socket =socket;
-
}
-
@Override
-
public void run() {
-
this.sendMsy();
-
}
-
/**
-
* 发送消息
-
*/
-
private void sendMsy(){
-
Scanner scanner =null;
-
PrintWriter pw =null;
-
try{
-
scanner =new Scanner(System.in);
-
pw =new PrintWriter(this.socket.getOutputStream());
-
while(true){
-
String str =scanner.nextLine();
-
pw.println(str);
-
pw.flush();
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
if (scanner!=null){
-
scanner.close();
-
}
-
if (pw!=null){
-
pw.close();
-
}
-
if (socket!=null){
-
try {
-
socket.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
}
-
}
-
/**
-
* 接收消息的线程
-
*/
-
class receive extends Thread{
-
private Socket socket=null;
-
public receive(Socket socket){
-
this.socket =socket;
-
}
-
@Override
-
public void run() {
-
this.receiveMsg();
-
}
-
/**
-
* 用于接收对方消息
-
*/
-
private void receiveMsg(){
-
BufferedReader br =null;
-
try{
-
br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
-
while(true){
-
String mr = br.readLine();
-
System.out.println("A说:"+mr);
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
if (br!=null){
-
try {
-
br.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
}
-
}
-
public class ChatSocketServer {
-
public static void main(String[] args) {
-
ServerSocket serverSocket =null;
-
try{
-
serverSocket =new ServerSocket(8888);
-
System.out.println("服务端已启动等待连接");
-
Socket socket = serverSocket.accept();
-
System.out.println("连接成功!");
-
new Send(socket).start();
-
new receive(socket).start();
-
}catch(Exception e){
-
e.printStackTrace();
-
}finally {
-
if (serverSocket!=null){
-
try {
-
serverSocket.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
}
-
}
以上是服务器端,下面是客户端
-
package TCP;
-
import java.io.BufferedReader;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import java.io.PrintWriter;
-
import java.net.Socket;
-
import java.util.Scanner;
-
public class ChatSocketClient {
-
public static void main(String[] args) {
-
try {
-
Socket socket =new Socket("127.0.0.1",8888);
-
System.out.println("连接成功!");
-
new ClientSend(socket).start();
-
new Clientreive(socket).start();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
/**
-
* 用于发送消息线程类
-
*/
-
class ClientSend extends Thread{
-
@Override
-
public void run() {
-
this.sendMsy();
-
}
-
private Socket socket;
-
public ClientSend(Socket socket){
-
this.socket =socket;
-
}
-
/**
-
* 发送消息
-
*/
-
private void sendMsy(){
-
Scanner scanner =null;
-
PrintWriter pw =null;
-
try{
-
scanner =new Scanner(System.in);
-
pw =new PrintWriter(this.socket.getOutputStream());
-
while(true){
-
String str =scanner.nextLine();
-
pw.println(str);
-
pw.flush();
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
if (scanner!=null){
-
scanner.close();
-
}
-
if (pw!=null){
-
pw.close();
-
}
-
if (socket!=null){
-
try {
-
socket.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
}
-
}
-
/**
-
*用于接收消息线程类
-
*/
-
class Clientreive extends Thread{
-
private Socket socket=null;
-
public Clientreive(Socket socket){
-
this.socket =socket;
-
}
-
@Override
-
public void run() {
-
this.receiveMsg();
-
}
-
/**
-
* 用于接收对方消息
-
*/
-
private void receiveMsg(){
-
BufferedReader br =null;
-
try{
-
br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
-
while(true){
-
String mr = br.readLine();
-
System.out.println("B说:"+mr);
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
if (br!=null){
-
try {
-
br.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
}
-
}
注意先启动服务器端,再启动客户端。