Androidチャットルーム(サーバ)
16931 ワード
Androidチャットルーム(サーバ)
黒衣の侠客
一.前言:
このブログは、前編『Androidチャットルーム(クライアント)』を受けています
二.準備:
サーバは主にJavaネットワークプログラミングに関連しています.
三.コンパイラ:
サーバーのコードはすべてideaに书き込みます.もちろんeclipseに书いてもいいです.操作するときは、まずサーバーを开けて运行し、それからクライアントを操作します.私が操作するときは、PC侧がサーバーとして、携帯电话と仮想机がクライアントとして、ここで注意しなければならないのは、携帯电话はパソコンと同じWiFiに接続しなければなりません.仮想机を使うと、これらの面倒を省くことができます.(仮想マシンとパソコンはもともと同じWiFiに接続されています)
四.コード:
まとめ:
これまで、クライアントとサーバーのブログはすべて完了しており、ソースコードは次のブログで、とにかく、今回のAndroidチャットルームの書くのは大変で、中には考えられない抜け穴がたくさんありますが、まあ、基本的なグループチャット機能を実現しました.今、Androidチャットルームは一段落しました.androidの知識を勉強し続けることができます.また、サーバの重要な詳細については、dosに関するリンクを提供します.writeUTFの長さ問題Javaでの強化forループreadUTF()とwriteUTF()の知識についての説明Server Socketの詳細
黒衣の侠客
一.前言:
このブログは、前編『Androidチャットルーム(クライアント)』を受けています
二.準備:
サーバは主にJavaネットワークプログラミングに関連しています.
三.コンパイラ:
サーバーのコードはすべてideaに书き込みます.もちろんeclipseに书いてもいいです.操作するときは、まずサーバーを开けて运行し、それからクライアントを操作します.私が操作するときは、PC侧がサーバーとして、携帯电话と仮想机がクライアントとして、ここで注意しなければならないのは、携帯电话はパソコンと同じWiFiに接続しなければなりません.仮想机を使うと、これらの面倒を省くことができます.(仮想マシンとパソコンはもともと同じWiFiに接続されています)
四.コード:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class Server {
public static void main(String[] args){
//startServer=new startServer();
new startServer().start();//new ( startServer Thread)
}
public static ArrayList<UserThread> socketList=new ArrayList<UserThread>();// UserThread(UserThread )
public static startServer startServer;
static class startServer extends Thread{
public void run(){
try{
ServerSocket serverSocket = new ServerSocket(6666);
// :6666 ServerSocket
while(true){//
Socket socket = serverSocket.accept();// socket ,
System.out.println(""+socket);// IP , ,
UserThread userThread = new UserThread(socket);// UserTread , userThread
Server.socketList.add(userThread);
new Thread(userThread).start();//
}
}catch(IOException e){
e.printStackTrace();
}
}
}
static class UserThread implements Runnable{
private Socket skt;
private DataOutputStream dos;
private DataInputStream dis;
public DataOutputStream getDos(){//
return dos;
}
public void setDos(DataOutputStream dos){//
this.dos=dos;
}
public DataInputStream getDis(){//
return dis;
}
public void setDis(DataInputStream dis){//
this.dis=dis;
}
public UserThread(Socket socket){//
skt=socket;
}
@Override
public void run(){
try{
dos= new DataOutputStream(skt.getOutputStream());// ( )
dis= new DataInputStream(skt.getInputStream());// ( )
String recMsg ="";
while(true){//
if(!"".equals(recMsg=dis.readUTF())){// , recMsg
System.out.println(" "+ recMsg);// : +“ ”
for(UserThread s:socketList){// for
if(s.equals(this)){
continue;
}
try{
s.getDos().writeUTF(recMsg);// UTF-8
}catch(IOException e){
socketList.remove(s);// s socketList
e.printStackTrace();
}
}
recMsg="";//recMsg
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
まとめ:
これまで、クライアントとサーバーのブログはすべて完了しており、ソースコードは次のブログで、とにかく、今回のAndroidチャットルームの書くのは大変で、中には考えられない抜け穴がたくさんありますが、まあ、基本的なグループチャット機能を実現しました.今、Androidチャットルームは一段落しました.androidの知識を勉強し続けることができます.また、サーバの重要な詳細については、dosに関するリンクを提供します.writeUTFの長さ問題Javaでの強化forループreadUTF()とwriteUTF()の知識についての説明Server Socketの詳細