作者max660865 (原则)
看板AndroidDev
标题[问题] socket多人连线
时间Sun Dec 18 13:11:24 2011
小弟因为休课要交份期末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
1F:推 nvidia:建议转到JAVA版 12/18 13:45
2F:推 LaPass:啊不就执行绪... 会1v1就自然而然会NvN了吧? 12/18 15:02
3F:推 gpc:又在考试了 12/19 10:35