- public class Server
- {
- public static void main(String args[]){
- try{
- ServerSocket server=new ServerSocket(6000);//端口号
- System.out.println("服务器已经启动,等待客户端连接中...");
- int clientnum=0;//计数器
- for(int i=0;i>=0;i++){
- Socket socket=server.accept();
- //DataOutputStream dop=new DataOutputStream(socket.getOutputStream());//输出信息给客户端
- ServerThread st=new ServerThread(socket,clientnum);
- st.start();
- clientnum++;
- System.out.println("第"+clientnum+"个客户端连接服务器!");
- //if(i==5){
- // dop.writeUTF("关闭");
- // break;
- //}
- }
- server.close();
- }catch(Exception e){e.printStackTrace();}
- }
- }
- class ServerThread extends Thread
- {
- private Socket socket;
- private int clientnum;
- public ServerThread(Socket socket,int num){
- this.socket=socket;
- this.clientnum=num;
- }
- public void run(){
- try{
- DataInputStream dip=new DataInputStream(socket.getInputStream());//输入客户端的信息
- System.out.println(dip.readUTF());//打印出客户端的信息
- dip.close();
- }catch(Exception e){e.printStackTrace();}
- }
- }
复制代码- public class Client
- {
- public static void main(String args[]){
- try{
- //String[] serverstr={"关公","周瑜","诸葛亮","项羽","西施"};
- for(int i=0;i>=0;i++){
- Socket socket=new Socket("127.0.0.1",6000);
- //System.out.println(serverstr[i]+":连接到服务器");
- ClientThread ct=new ClientThread(socket);
- ct.start();
- ct.join(); //永久等待
- socket.close();
- }
- }catch(Exception e){e.printStackTrace();}
- }
- }
- class ClientThread extends Thread
- {
- private Socket socket;
- public ClientThread(Socket socket){
- this.socket=socket;
- }
- public void run(){
- try{
- DataOutputStream dop=new DataOutputStream(socket.getOutputStream());//输出信息给服务器
- Scanner sc=new Scanner(System.in);
- String str=sc.nextLine();//下一行
- dop.writeUTF(str);
- dop.flush();
- dop.close();
- }catch(Exception e){e.printStackTrace();}
- }
- }
复制代码 这个是我自己写的无限聊天的多线程Socket,你最好是用我这样的方法来从客户端给服务器传送数据,最好别用读取一行的,因为肯能度到空格噢,你试下把你的line先去除前后的空格在和你那个字符串对比看看行不行吧~
还有我上面的代码不是粘贴复制的,是我自己写的一个Demo噢~最讨厌一些人我把代码贴出来就觉得我是从网上拷贝的。 |