利用Socket与服务器端交互的简单Android范例代码.docx
- 文档编号:5895881
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:6
- 大小:15.73KB
利用Socket与服务器端交互的简单Android范例代码.docx
《利用Socket与服务器端交互的简单Android范例代码.docx》由会员分享,可在线阅读,更多相关《利用Socket与服务器端交互的简单Android范例代码.docx(6页珍藏版)》请在冰豆网上搜索。
利用Socket与服务器端交互的简单Android范例代码
利用Socket与服务器端交互的简单Android范例代码
在Android中可以直接利用java中的Socket与ServerSocket构建socket通信。
代码的运行环境:
pc端:
普通pc,作为服务器,在5648端口进行监听。
代码运行一切正常,客户端发送的文字将在服务器端接收并显示,服务器每接收到客户端的一行文字,就会返回一个从0开始递增的整数,此整数将在客户端显示出来。
pc端代码:
packagetest;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.PrintWriter;
import.ServerSocket;
import.Socket;
publicclassTestimplementsRunnable{
/**
*@paramargs
*/
intmax=10;//最大开启线程数
inti=0;//回复数字
inttemp;
ServerSocketserverSocket;
Socketsocket[];
publicTest(){
try{
serverSocket=newServerSocket(5648);//在5648端口进行侦听
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("can'tinitateServerSocket!
");
return;
}
socket=newSocket[max];
System.out.println("waitingforconnect");
try{
while((socket[i]=serverSocket.accept())!
=null){
temp=i;
i++;
newThread(this).start();//每侦听到一个客户端的连接,就会开启一个工作线程
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
newTest();
}
@Override
publicvoidrun(){
Socketsk=socket[temp];
System.out.println("accept:
"+sk.getInetAddress().getHostAddress());
InputStreamis=null;
OutputStreamos=null;
BufferedReaderbr=null;
PrintWriterpw=null;
try{
is=sk.getInputStream();
os=sk.getOutputStream();
br=newBufferedReader(newInputStreamReader(is));
pw=newPrintWriter(os);
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
try{
sk.close();
}catch(IOExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
return;
}
Stringstr;
try{
intm=0;
while((str=br.readLine())!
=null){
System.out.println(str);
pw.println(m);
pw.flush();
m++;
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
android设备客户端代码:
MainActivity.java;代码:
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
import.Socket;
import.UnknownHostException;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.util.Log;
importandroid.view.Menu;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
publicclassMainActivityextendsActivityimplementsOnClickListener,Runnable{
privateButtonbutton;
privateEditTexteditText;
privateSocketsocket;
privatePrintWriterpw;
privateBufferedReaderbr;
privateHandlerhandler;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler=newHandler();
button=(Button)findViewById(R.id.button);
button.setOnClickListener(this);
editText=(EditText)findViewById(R.id.edittext);
try{
socket=newSocket("",5648);//连接到的5648端口
}catch(UnknownHostExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
Log.e("socket","unknownhost");
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
Log.e("socket","ioexecption");
}
if(socket==null){
Log.e("socket","null");
}
else
try{
pw=newPrintWriter(socket.getOutputStream());
br=newBufferedReader(newInputStreamReader(socket.getInputStream()));
if(pw!
=null&&br!
=null){
newThread(this).start();
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
getMenuInflater().inflate(R.menu.activity_main,menu);
returntrue;
}
publicvoidonClick(Viewview){
if(view==button){
Stringstr;
str=editText.getText().toString();
pw.println(str);
pw.flush();
}
}
publicvoidrun(){
try{
Stringstr;
while((str=br.readLine())!
=null){
finalStrings=str;
handler.post(newRunnable(){
publicvoidrun(){
Toast.makeText(MainActivity.this,s,Toast.LENGTH_LONG).show();
}});
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 Socket 服务器端 交互 简单 Android 范例 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)