写一个安卓局域网内socket聊天,因为自己也是个菜鸟,方法是参考网上的,现在分享给大家参考,欢迎交流,共同进步。
首先建立工程,自己命名。它创建了2个文件,一个是MainActity.java,一个是activity_main.xml。
我们在src的包内再建立2个文件,一个是ChatClient.java,另一个是ChatServer.java,此时包内一共3个java文件。
首先创建布局activity_main.xml。
代码如下:
<>< p=''><>
android:id='@+id/textView1'
android:layout_width='wrap_content'
android:layout_height='wrap_content'
<>< p=''><>
android:id='@+id/editText1'
android:layout_width='wrap_content'
android:layout_height='wrap_content'
android:layout_alignLeft='@+id/textView1'
android:layout_below='@+id/textView1'
android:layout_marginTop='22dp'
2.修改ChatClient.java文件如下:
public class ChatClient {
public Socket requestSocket(String host) throws UnknownHostException,IOException{
Socket socket=new Socket(host,5000);
return socket;
}
public void sendMsg(Socket socket,String msg)throws IOException{
BufferedWriter writer=new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())
);
writer.write(msg.replace('\n','')+'\n');
writer.flush();
}
public String receiveMsg(Socket socket)throws IOException{
BufferedReader reader=new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
String txt=reader.readLine();
return txt;
}
}
3修改ChatServer.java文件如下:
public class ChatServer extends Thread {
public ChatServer() throws IOException {
createSocket();
}
public void run(){
Socket client;
String txt;
Log.i('信息','成功开始服务器,端口为:'+PORT);
try{
while (true){
client=ResponseSocket();
while(true){
txt=ReceiveMsg(client);
System.out.println(txt);
Message message1 = new Message();
message1.obj =txt+'\n';
com.example.hxsocket02.MainActivity.handler.sendMessage(message1);
if(true)
break;
}
// CloseSocket(client);
}
}catch (IOException e){
}
}
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
};
};
public ServerSocket server=null;
private int PORT =5000;
private BufferedWriter writer;
private BufferedReader reader;
public void createSocket() throws IOException{
//server=new ServerSocket(PORT,100);
server=new ServerSocket(PORT);
}
public Socket ResponseSocket() throws IOException{
Socket client =server.accept();
return client;
}
public void CloseSocket(Socket socket) throws IOException{
reader.close();
socket.close();
server.close();
}
public void sendMsg(Socket socket,String string)throws IOException{
writer=new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())
);
writer.write('msg'+string);
writer.flush();
}
public String ReceiveMsg(Socket socket) throws IOException{
reader=new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
String txt ='对方:'+reader.readLine();
return txt;
}
}
最后修改权限,在AndroidManifest.xml文件添加以下权限:
Java文件有错误的地方,放上鼠标导入修改就可以。
使用方法:在ip栏输入对方的ip就可以聊天了。
因为本人也是初学,有不足之处,还请斧正。