Android手机通过socket与pc通信.docx

上传人:b****1 文档编号:14478795 上传时间:2023-06-23 格式:DOCX 页数:7 大小:19.44KB
下载 相关 举报
Android手机通过socket与pc通信.docx_第1页
第1页 / 共7页
Android手机通过socket与pc通信.docx_第2页
第2页 / 共7页
Android手机通过socket与pc通信.docx_第3页
第3页 / 共7页
Android手机通过socket与pc通信.docx_第4页
第4页 / 共7页
Android手机通过socket与pc通信.docx_第5页
第5页 / 共7页
Android手机通过socket与pc通信.docx_第6页
第6页 / 共7页
Android手机通过socket与pc通信.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Android手机通过socket与pc通信.docx

《Android手机通过socket与pc通信.docx》由会员分享,可在线阅读,更多相关《Android手机通过socket与pc通信.docx(7页珍藏版)》请在冰点文库上搜索。

Android手机通过socket与pc通信.docx

Android手机通过socket与pc通信

Android手机通过socket与pc通信

Android手机通过socket与pc通信标签:

androidsocket手机layoutbuttonstring2012-07-1223:

30

17312人阅读

评论(30)

收藏

举报分类:

Android(9)版权声明:

本文为博主原创文章,未经博主允许不得转载。

 

在Android中可以直接利用java中的Socket与ServerSocket构建socket通信。

代码的运行环境:

pc端:

普通pc,作为服务器,已经设置有域名(通过动态域名软件设置),在5648端口进行监听。

Android手机客户端:

android2.3设备。

代码运行一切正常,客户端发送的文字将在服务器端接收并显示,服务器每接收到客户端的一行文字,就会返回一个从0开始递增的整数,此整数将在客户端显示出来。

pc端代码:

[java]viewplaincopypackagetest;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-generatedcatchblocke.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-generatedcatchblocke.printStackTrace();}}publicstaticvoidmain(String[]args){newTest();}@Overridepublicvoidrun(){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-generatedcatchblocke.printStackTrace();try{sk.close();}catch(IOExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}return;}Stringstr;try{intm=0;while((str=br.readLine())!

=null){System.out.println(str);pw.println(m);pw.flush();m++;}}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}android设备客户端代码:

MainActivity.java代码:

[java]viewplaincopypackagecom.tobacco.phonetest;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;@OverridepublicvoidonCreate(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端口[java]viewplaincopy<spanstyle="white-space:

pre"></span>//是我申请的域名}catch(UnknownHostExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();Log.e("socket","unknownhost");}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();Log.e("socket","ioexecption");}if(socket==null){Log.e("socket","null");}elsetry{pw=newPrintWriter(socket.getOutputStream());br=newBufferedReader(newInputStreamReader(socket.getInputStream()));if(pw!

=null&&br!

=null){newThread(this).start();}}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}@OverridepublicbooleanonCreateOptionsMenu(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-generatedcatchblocke.printStackTrace();}}}

activity_main.xml代码:

[html]viewplaincopy<LinearLayoutxmlns:

android="android:

layout_width="match_parent"android:

layout_height="match_parent"android:

orientation="vertical"><TextViewandroid:

layout_width="wrap_content"android:

layout_height="wrap_content"android:

text="@string/hello_world"/><EditTextandroid:

id="@+id/edittext"android:

layout_width="fill_parent"android:

layout_height="wrap_content"android:

hint="@string/message"/><Buttonandroid:

id="@+id/button"android:

layout_width="fill_parent"android:

layout_height="wrap_content"android:

text="@string/hello_world"/></LinearLayout>

因为此客户端程序要用到网络,所以要在manifest文件中添加权限。

Manifest.xml代码:

[html]viewplaincopy<manifestxmlns:

android="package="com.tobacco.phonetest"android:

versionCode="1"android:

versionName="1.0"><uses-sdkandroid:

minSdkVersion="8"android:

targetSdkVersion="15"/><uses-permissionandroid:

name="android.permission.INTERNET"></uses-permission><applicationandroid:

icon="@drawable/ic_launcher"android:

label="@string/app_name"android:

theme="@style/AppTheme"><activityandroid:

name=".MainActivity"android:

label="@string/title_activity_main"><intent-filter><actionandroid:

name="android.intent.action.MAIN"/><categoryandroid:

name="android.intent.category.LAUNCHER"/></intent-filter></activity></application></manifest>

顶11

踩0

上一篇Linux下Android开发手机设备不可用问题下一篇用nasm重写linux0.00

我的同类文章Android(9)·利用adb查看模拟器中的数据库·关于Android中的乱码·Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)·Linux下Android开发手机设备不可用问题·eclipse安装adt不能从官网抓取数据的解决办法

·利用adb修改设备中的SharedPreferences配置文件·关于Cursor,关于ListView,关于Adapter,关于学习方法·利用ListActivity,CursorAdapter获取用户输入(短信群发器的地址输入实现)总结·Android实现远程控制PC(Android[客户端]+Qt[服务器端])主题推荐

android

socket

手机

通信

pc

 

猜你在找

Android开发精品课程【Java核心知识】Android必备的Java基础知识(三)Android底层技术:

Java层系统服务(AndroidService)移动手机APP测试从零开始(高级篇)基于J2EE实现Webservice项目实战ATM查看评论

22楼日月同辉5252015-09-0416:

58发表[回复]初学者学习了,给楼主赞一个21楼zxwei092015-08-2022:

17发表[回复]楼主的这个demo貌似不可以啊,老是报异常:

Causedby:

android.os.NetworkOnMainThreadException,真机和模拟器都测试过了,不行啊。

20楼卢泰桉TaiAn2015-07-2410:

42发表[回复]在38行的位置socket=newSocket();这个地方,不能在主线程中操作,得启动一个新的线程19楼张海锋2015-06-1222:

50发表[回复]学习了18楼玉米土豆2015-06-1111:

37发表[回复]楼主您好:

请问一下PC端的代码在哪儿运行,需要服务器吗?

还有<spanstyle="white-space:

pre">这代码在eclipse里编译不过怎么回事?

跪求回答,谢谢!

17楼us_lei2015-05-3111:

33发表[回复]您好,请问在手机2G或3G网络下,有什么好的办法实现手机客户端程序与PC端服务器端程序通信吗?

希望能跟您交个朋友,向您请教。

Re:

tobacco2015-06-0109:

10发表[回复]回复us_lei:

如果PC端有公网IP的话可以直接用PC的公网IP通信,如果没有,需要在公网上搭建一个转发服务器。

16楼u0141562862015-04-2212:

01发表[回复]为什么安卓客户端已打开就被关闭了,楼主测试的时候是用手机测试还是用模拟器的?

模拟器不是默认可以连接网络的吗?

小弟刚入门,还请多指教15楼u0141562862015-04-2211:

58发表[回复]为什么安卓客户端已打开就被关闭了,楼主测试的时候是用手机测试还是用模拟器的?

模拟器不是默认可以连接网络的吗?

小弟刚入门,还请多指教14楼u0141562862015-04-2211:

56发表[回复]为什么安卓客户端已打开就被关闭了,楼主测试的时候是用手机测试还是用模拟器的?

模拟器不是默认可以连接网络的吗?

小弟刚入门,还请多指教13楼弱机菜鸟2014-12-1717:

09发表[回复]感谢楼主分享12楼Yellow5A52014-07-2502:

24发表[回复]谢谢楼主分享~

我有个问题想问,

就是只局限于局域网的话。

是不是手机wifi和电脑连接,然后是他们两个可以通信。

如果手机没有WiFi连接,就没办法通信,是吗?

Re:

tobacco2014-07-2511:

33发表[回复]回复u011035622:

只要手机能通过ip能访问到电脑就行,如果是固定ip的宽带网络,手机很容易就能与电脑通信。

11楼君子之邦2014-07-2108:

12发表[回复]有完整的工程源代码么?

你的源码我现在运行不了!

10楼看写写2014-04-2611:

11发表[回复].........大哥2.3.1也不能运行一运行就关闭...9楼1739282013-11-0217:

35发表[回复]大哥。

这东西能在4.0的系统上跑么?

老是自动关闭Re:

tobacco2013-11-0315:

30发表[回复]回复u012674984:

当初是为Android2.3写的8楼zipzip582013-07-1818:

44发表[回复]楼主~想请问一下..怎么样才能在4.1.2上跑这个程序啊7楼xiaoxuxiaoyi2013-07-1411:

40发表[回复]楼主,我想问一下,如果获取一个局域网内所有的IPRe:

tobacco2013-08-0210:

33发表[回复]回复xiaoxuxiaoyi:

这必须要局域网内其他设备会答复本设备的询问6楼happytaozs2013-03-1422:

49发表[回复]LZ你好,想问一下,你的手机和PC是在同一个局域网中吗?

我现在的PC是连在校园局域网上,属于内网,但是并不知道校园的公网IP,我想用Android手机与PC进行远程通信,比如说:

我在离学校很远的外地,用你的这种方法可以实现手机和PC通信吗?

(PS:

手机和PC不在同一个局域网内)Re:

tobacco2013-08-0210:

31发表[回复]回复happytaozs:

不在同一个局域网的话是不能直接用IP来通信的。

5楼y45398jp2012-11-0510:

30发表[回复]请问手机端的程序是允许在真机上还是模拟器上?

另外,手机连wifi了吗?

Re:

tobacco2012-11-0511:

08发表[回复]回复y45398jp:

真机和模拟器都可以运行,只要IP地址(或者域名)正确,并有网络连接就可以通信。

跟手机连不连wifi没有关系,没有wifi手机会自动通过gprs来发送数据的,只要有网络连接都可以正常运行的。

Re:

tobacco2012-11-0511:

08发表[回复]回复y45398jp:

真机和模拟器都可以运行,只要IP地址(或者域名)正确,并有网络连接就可以通信。

跟手机连不连wifi没有关系,没有wifi手机会自动通过gprs来发送数据的,只要有网络连接都可以正常运行的。

4楼y45398jp2012-11-0510:

27发表[回复]请问你的手机端程序是在真机上运行,还是在模拟器运行的?

另外,手机有没有连接到wifi?

3楼luffycheung2012-10-3110:

58发表[回复]想请教下lz

Socket("",5648)里的域名

可以换成主机IP吗?

Android客户端Wifi连接,和PC端socket通信可行吗?

Re:

tobacco2012-10-3112:

13发表[回复]回复zhd172:

可以换成主机IP。

Android客户端通过wifi连接,可以和PC通信,只要知道正确的PC的IP。

2楼tobacco2012-08-1019:

41发表[回复]当然在不同的工程里,服务端运行在pc上面,而客户端运行在Android手机设备上面。

服务端是普通java工程,客户端是Android2.3工程。

1楼v5tuandui2012-08-1016:

23发表[回复]服务端和客户端放在同一个工程里吗

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2