자바 프로 그래 밍 다 중 채 팅 방 기능 구현
프로그램 소스 코드 및 실행 캡 처:
server.java
//server.java
package Socket;
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.ArrayList;
import java.util.List;
import java.util.Scanner;
public class server implements Runnable {//
static List<Socket> socketList=new ArrayList<Socket>();
// In
static Socket socket = null;
static ServerSocket serverSocket = null;
public server() {//
try {
serverSocket = new ServerSocket(9999);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("************ *************");
server t = new server();
int count = 0;
while (true) {
try {
// System.out.println(" 9999 ......");
socket = serverSocket.accept();
count++;
System.out.println(" " + count + " ");
socketList.add(socket);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Print p = new Print(socket);
Thread read = new Thread(t);
Thread print = new Thread(p);
read.start();
print.start();
}
}
@Override
public void run() {
// run
try {
Thread.sleep(1000);
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
while (true) {
String jieshou = in.readLine();
System.out.println( jieshou);
for (int i = 0; i < socketList.size(); i++) {
Socket socket=socketList.get(i);
PrintWriter out = new PrintWriter(socket.getOutputStream());
if (socket!=this.socket) {
out.println(jieshou);
}else{
out.println("( )"+jieshou);
}
out.flush();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Print implements Runnable {
static List<Socket> socketList=new ArrayList<Socket>();
Scanner input = new Scanner(System.in);
public Print(Socket s) {//
try {
socketList.add(s);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
Thread.sleep(1000);
while (true) {
String msg = input.next();
for (int i = 0; i < socketList.size(); i++) {
Socket socket=socketList.get(i);
PrintWriter out = new PrintWriter(socket.getOutputStream());
// System.out.println(" :");
out.println(" :"+msg);
out.flush();
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
client.java
//client.java
package Socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class client implements Runnable {//
static Socket socket = null;
Scanner input = new Scanner(System.in);
static String name=null;
public static void main(String[] args) {
int x=(int)(Math.random()*100);
client.name="client"+x;
System.out.println("************ "+x+"*************");
try {
socket = new Socket("127.0.0.1", 9999);
System.out.println(" ");
} catch (Exception e) {
e.printStackTrace();
}
client t = new client();
Read r = new Read(socket);
Thread print = new Thread(t);
Thread read = new Thread(r);
print.start();
read.start();
}
@Override
public void run() {
try {
Thread.sleep(1000);
PrintWriter out = new PrintWriter(socket.getOutputStream());
while (true) {
String msg = input.next();
out.println(name+" :"+msg);
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Read implements Runnable {
static Socket socket = null;
public Read(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
Thread.sleep(1000);
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
while (true) {
System.out.println( in.readLine());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
테스트 데이터 1:서버 프로그램 실행 캡 처:
클 라 이언 트 1 프로그램 실행 캡 처:
클 라 이언 트 2 프로그램 실행 캡 처:
테스트 데 이 터 를 통 해 알 수 있 듯 이 프로그램 은 여러 사람의 채 팅 을 실현 할 수 있 고 효과 와 성능 은 그런대로 괜 찮 은 편 이다.또한 모든 클 라 이언 트 가 서버 에 연결 할 때 랜 덤 수 를 자신의 표지 로 만들어 통화 과정 에서 서 로 를 구분 하지 못 하고 교류 효과 가 좋 지 않 습 니 다.
테스트 데이터 2:
서버 실행 캡 처:
클 라 이언 트 1 프로그램 실행 캡 처:
클 라 이언 트 2 프로그램 실행 캡 처:
클 라 이언 트 3 프로그램 실행 캡 처:
클 라 이언 트 4 프로그램 실행 캡 처:
클 라 이언 트 5 프로그램 실행 캡 처:
클 라 이언 트 6 프로그램 실행 캡 처:
클 라 이언 트 7 프로그램 실행 캡 처:
클 라 이언 트 8 프로그램 실행 캡 처:
클 라 이언 트 9 프로그램 실행 캡 처:
클 라 이언 트 10 프로그램 실행 캡 처:
테스트 2 는 모두 10 개의 클 라 이언 트 에 연결 되 어 프로그램 안정성 테스트 를 실시 했다.프로그램 운행 결과 가 안정 적 이 고 실험 기대 결과 에 부합 되 며 프로그램의 노 봉 성 이 비교적 강하 다 는 것 을 충분히 설명 했다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.