Socketクライアントとサービス側、複数のクライアントとサービス側が通じ、クライアントとクライアントの間で通信!
4349 ワード
サービス側
クライアント(複数のクライアント通信、クライアントとクライアント間の通信を拡張可能)
package luck;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Servr {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
int port = 8000;
// serversocket 8000
ServerSocket server = new ServerSocket(port);
while(true){
System.out.println("1");
//server socket ,server accept
Socket socket = server.accept();
//
new Thread(new Task(socket)).start();
//
new Thread(new sendMessage(socket)).start();
}
}
/*
* socket
*/
static class Task implements Runnable {
private Socket socket;
public Task(Socket socket){
this.socket = socket;
}
public void run() {
try {
handleSocket();
} catch (Exception e) {
if(e.getMessage().equals("Connection reset")){
System.out.println(" socket");
}
}
}
/*
*
*/
private void handleSocket() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
int len;
StringBuffer sb = new StringBuffer();
String temp = "";
while(!(temp = br.readLine()).equals("end")){
sb = new StringBuffer();
if( (len = temp.indexOf("of")) != -1){
sb.append(temp.substring(0, len));
}
sb.append(temp);
System.out.println(" from client :"+sb);
}
}
}
/**
*
* @author luck
*/
static class sendMessage implements Runnable {
private Socket socket;
public sendMessage(Socket socket){
this.socket = socket;
}
@Override
public void run() {
Writer write;
try {
write = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");
while (true) {
Scanner in=new Scanner(System.in);
write.write(in.next());
write.write("
");
write.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
クライアント(複数のクライアント通信、クライアントとクライアント間の通信を拡張可能)
package luck;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;
import java.util.Scanner;
public class ClientSocketOne {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String ip = "127.0.0.1";// ip
int port = 8000;//
//
Socket client = new Socket(ip,port);
//
new Thread(new Writes(client)).start();
//
new Thread(new Send(client)).start();
}
static class Writes implements Runnable {
private Socket client;
public Writes(Socket client){
this.client = client;
}
public void run() {
try {
socketServer();
} catch (IOException e) {
if(e.getMessage().equals("Connection reset")){
System.out.println(" ");
}
}
}
/*
*
*/
private void socketServer() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
int len;
String temp ="";
StringBuffer sb;
while(client.isConnected() && !(temp = br.readLine()).equals("end")){
sb = new StringBuffer();
if((len = temp.indexOf("of")) != -1){
sb.append(temp.substring(0, len));
}
sb.append(temp);
System.out.println("from server : "+sb);
}
}
}
/**
*
* @author luck
*
*/
static class Send implements Runnable {
private Socket client;
public Send(Socket client){
this.client = client;
}
public void run() {
try {
socketServer();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
*
*/
private void socketServer() throws IOException{
Writer writer = new OutputStreamWriter(client.getOutputStream(), "UTF-8");
while (true) {
Scanner in=new Scanner(System.in);
writer.write(in.next());
writer.write("
");
writer.flush();
}
}
}
}