已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
android socket编程实例 android客户端通过socket与服务器进行通信可以分为以下几步:应用程序与服务器通信可以采用两种模式:TCP可靠通信 和UDP不可靠通信。(1)通过IP地址和端口实例化Socket,请求连接服务器: socket = new Socket(HOST, PORT); /host:为服务器的IP地址 port:为服务器的端口号(2)获取Socket流以进行读写,并把流包装进BufferWriter或者PrintWriter: PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),true); 这里涉及了三个类:socket.getOutputStream得到socket的输出字节流,OutputStreamWriter是字节流向字符流转换的桥梁,BufferWriter是字符流,然后再包装进PrintWriter。(3)对Socket进行读写 if (socket.isConnected() if (!socket.isOutputShutdown() out.println(msg); (4)关闭打开的流 out.close();在写代码的过程中一定要注意对socket 输入流 输出流的关闭下面是一个简单的例子:main.xmlhtml view plaincopy1. 2. 6. 11. 15. 16. 21. 22. 下面是android客户端的源代码:java view plaincopy1. packagecom.android.SocketDemo;2. 3. importjava.io.BufferedReader;4. importjava.io.BufferedWriter;5. importjava.io.IOException;6. importjava.io.InputStreamReader;7. importjava.io.OutputStreamWriter;8. importjava.io.PrintWriter;9. .Socket;10. 11. importandroid.app.Activity;12. importandroid.app.AlertDialog;13. importandroid.content.DialogInterface;14. importandroid.os.Bundle;15. importandroid.os.Handler;16. importandroid.os.Message;17. importandroid.view.View;18. importandroid.widget.Button;19. importandroid.widget.EditText;20. importandroid.widget.TextView;21. 22. publicclassSocketDemoextendsActivityimplementsRunnable23. privateTextViewtv_msg=null;24. privateEditTexted_msg=null;25. privateButtonbtn_send=null;26. /privateButtonbtn_login=null;27. privatestaticfinalStringHOST=23;28. privatestaticfinalintPORT=9999;29. privateSocketsocket=null;30. privateBufferedReaderin=null;31. privatePrintWriterout=null;32. privateStringcontent=;33. 34. /*Calledwhentheactivityisfirstcreated.*/35. Override36. publicvoidonCreate(BundlesavedInstanceState)37. super.onCreate(savedInstanceState);38. setContentView(R.layout.main);39. 40. tv_msg=(TextView)findViewById(R.id.TextView);41. ed_msg=(EditText)findViewById(R.id.EditText01);42. /btn_login=(Button)findViewById(R.id.Button01);43. btn_send=(Button)findViewById(R.id.Button02);44. 45. try46. socket=newSocket(HOST,PORT);47. in=newBufferedReader(newInputStreamReader(socket.getInputStream();48. out=newPrintWriter(newBufferedWriter(newOutputStreamWriter(49. socket.getOutputStream(),true);50. catch(IOExceptionex)51. ex.printStackTrace();52. ShowDialog(loginexception+ex.getMessage();53. 54. btn_send.setOnClickListener(newButton.OnClickListener()55. 56. Override57. publicvoidonClick(Viewv)58. /TODOAuto-generatedmethodstub59. Stringmsg=ed_msg.getText().toString();60. if(socket.isConnected()61. if(!socket.isOutputShutdown()62. out.println(msg);63. 64. 65. 66. );67. newThread(SocketDemo.this).start();68. 69. 70. publicvoidShowDialog(Stringmsg)71. newAlertDialog.Builder(this).setTitle(notification).setMessage(msg)72. .setPositiveButton(ok,newDialogInterface.OnClickListener()73. 74. Override75. publicvoidonClick(DialogInterfacedialog,intwhich)76. /TODOAuto-generatedmethodstub77. 78. 79. ).show();80. 81. 82. publicvoidrun()83. try84. while(true)85. if(socket.isConnected()86. if(!socket.isInputShutdown()87. if(content=in.readLine()!=null)88. content+=n;89. mHandler.sendMessage(mHandler.obtainMessage();90. else91. 92. 93. 94. 95. 96. catch(Exceptione)97. e.printStackTrace();98. 99. 100. 101. publicHandlermHandler=newHandler()102. publicvoidhandleMessage(Messagemsg)103. super.handleMessage(msg);104. tv_msg.setText(tv_msg.getText().toString()+content);105. 106. ;107. 下面是服务器端得java代码:java view plaincopy1. importjava.io.BufferedReader;2. importjava.io.BufferedWriter;3. importjava.io.IOException;4. importjava.io.InputStreamReader;5. importjava.io.OutputStreamWriter;6. importjava.io.PrintWriter;7. .ServerSocket;8. .Socket;9. importjava.util.ArrayList;10. importjava.util.List;11. importjava.util.concurrent.ExecutorService;12. importjava.util.concurrent.Executors;13. 14. 15. publicclassMain16. privatestaticfinalintPORT=9999;17. privateListmList=newArrayList();18. privateServerSocketserver=null;19. privateExecutorServicemExecutorService=null;/threadpool20. 21. publicstaticvoidmain(Stringargs)22. newMain();23. 24. publicMain()25. try26. server=newServerSocket(PORT);27. mExecutorService=Executors.newCachedThreadPool();/createathreadpool28. System.out.print(serverstart.);29. Socketclient=null;30. while(true)31. client=server.accept();32. mList.add(client);33. mExecutorService.execute(newService(client);/startanewthreadtohandletheconnection34. 35. catch(Exceptione)36. e.printStackTrace();37. 38. 39. classServiceimplementsRunnable40. privateSocketsocket;41. privateBufferedReaderin=null;42. privateStringmsg=;43. 44. publicService(Socketsocket)45. this.socket=socket;46. try47. in=newBufferedReader(newInputStreamReader(socket.getInputStream();48. msg=user+this.socket.getInetAddress()+cometoal:49. +mList.size();50. this.sendmsg();51. catch(IOExceptione)52. e.printStackTrace();53. 54. 55. 56. 57. Override58. publicvoidrun()59. /TODOAuto-generatedmethodstub60. try61. while(true)62. if(msg=in.readLine()!=null)63. if(msg.equals(exit)64. System.out.println(ssssssss);65. mList.remove(socket);66. in.close();67. msg=user:+socket.getInetAddress()68. +exittotal:+mList.size();69. socket.close();70. this.sendmsg();71. break;72. else73. msg=socket.getInetAddress()+:+msg;74. this.sendmsg();75. 76. 77. 78. catch(Exceptione)79. e.printStackTrace();80. 81. 82. 83. publicvoidsendmsg()84. System.out.println(msg);85. intnum=mList.size();86.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能仓储物流自动化系统在建材物流中的创新应用前景报告
- 小学舞蹈美育教学实践与评价体系构建教学研究课题报告
- 2025年湛江市美术中学招聘临聘教师8人备考题库有答案详解
- 初中英语写作中情感策略错误纠正策略的课题报告教学研究课题报告
- 2025年厦门一中集美分校(灌口中学)非在编、顶岗教师招聘备考题库及完整答案详解1套
- 2026年无人驾驶物流车队管理创新报告
- 2025年大连理工大学外国语学院招聘备考题库(自聘)含答案详解
- 初中英语写作中逻辑衔接策略的写作评价标准研究课题报告教学研究课题报告
- 宁波市轨道交通物产置业有限公司下属项目公司2025年度社会招聘备考题库及一套完整答案详解
- 2025年龙游县安驿机动车检测有限公司和龙游县龙新高速公路投资有限公司公开招聘合同制员工6人的备考题库完整答案详解
- 职业教育人工智能应用发展报告(2024-2025)
- 2025年山东城市服务职业学院单招职业适应性测试题库附答案
- 二装现场安全巡查课件
- 2026年住院医师规培(整形外科)试题及答案
- 2025-2026学年2026年九年级数学中考大题专题:二次函数的实际应用【附答案】
- 2026年交管12123学法减分复习考试题库及参考答案(培优)
- 循环肿瘤细胞
- 非典型溶血性尿毒症护理课件
- 结膜囊冲洗流程
- 地理中国的气候第三课时课件-2025-2026学年八年级地理上学期(湘教版2024)
- 应聘人员登记表和考核表模版
评论
0/150
提交评论