[問題] socket多人連線
小弟因為休課要交份期末project
目前打算做兩隻手機連線玩剪刀石頭布
因為前幾次作業有寫過socket所以打算用上次的改
上次的作業是可以多人連線猜數字
ex.解答為5678,若猜4678會回應說3A0B,A表示數字位置都對,B表示數字對位置不對
server:
package hw_2;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class server
{
public static void main(String[] args)
throws IOException{
int listenPort= 8888;
ServerSocket serverSocket= null;
Socket clientSocket= null;
try {
serverSocket= new ServerSocket(listenPort);
System.out.println("the server information:"+
serverSocket.getLocalSocketAddress());
Thread thread= null;
while (true) {
System.out.println("server start!");
clientSocket= serverSocket.accept();
thread = new Thread(new serverthread(clientSocket));
thread.start();
}
}
catch (IOException e) {
System.out.println("some error:" + e.getMessage());
}
}
}
thread:
package hw_2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
class serverthread implements Runnable{
Socket clientSocket= null;
PrintStream out = null;
BufferedReader in = null;
public serverthread(Socket s) {
this.clientSocket= s;
}
public void run() {
System.out.println("the client information :"+
clientSocket.getRemoteSocketAddress());
try {
out = new PrintStream(clientSocket.getOutputStream());
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String number="5678";//欲猜測之數字
String str= in.readLine();
int a=0;
int b=0;
String answer;
if(str.charAt(0)==number.charAt(0))
{a=a+1;}
else if(str.charAt(0)==number.charAt(1) || str.charAt(0)==number.charAt(2) ||
str.charAt(0)==number.charAt(3))
{b=b+1;}
if (str.charAt(1)==number.charAt(1))
{a=a+1;}
else if (str.charAt(1)==number.charAt(0) || str.charAt(1)==number.charAt(2)
|| str.charAt(1)==number.charAt(3))
{b=b+1;}
if (str.charAt(2)==number.charAt(2))
{a=a+1;}
else if (str.charAt(2)==number.charAt(0) || str.charAt(2)==number.charAt(1)
|| str.charAt(2)==number.charAt(3))
{b=b+1;}
if (str.charAt(3)==number.charAt(3))
{a=a+1;}
else if (str.charAt(3)==number.charAt(0) || str.charAt(3)==number.charAt(1)
|| str.charAt(3)==number.charAt(2))
{b=b+1;}
answer=a+"A"+b+"B";
out.println(answer);
out.flush();
out.close();
in.close();
clientSocket.close();
} catch (IOException e) {
System.out.println("Error:"+e.getMessage());
}
}
}
大至上了解多人連線的方法,但是如何同步不太了解怎麼寫
有請版上大大指點迷津一下感恩~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.22.48
推
12/18 13:45, , 1F
12/18 13:45, 1F
推
12/18 15:02, , 2F
12/18 15:02, 2F
推
12/19 10:35, , 3F
12/19 10:35, 3F