在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

Java Socket通信(一)之客户端程序 发送和接收数据

2016-8-29 13:24| 发布者: zhangjf| 查看: 621| 评论: 0

摘要: 网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。 对于Socket通信简述,服务端往Socket的输出流里 ...

网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。

对于Socket通信简述,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。

例1:客户端的简略写法(一)。

  1. Socket client = null;
  2. try{
  3. client = new Socket(Ip,Port);
  4. String msg="发送的数据内容!";
  5. //得到socket读写流,向服务端程序发送数据
  6. client.getOutputStream().write(msg.getBytes());
  7. byte[] datas = new byte[2048];
  8. //从服务端程序接收数据
  9. client.getInputStream().read(datas);
  10. System.out.println(new String(datas));
  11. }catch(Exception e){
  12. e.printStackTrace();
  13. }finally {
  14. if (client != null) {
  15. try {
  16. client.close();
  17. } catch (IOException e) {
  18. System.out.println("systemerr:" +e);
  19. }
  20. }
  21. }
复制代码

例2:客户端简略写法(二)。

  1. try{
  2. client = new Socket();
  3. SocketAddress socketAddress = new InetSocketAddress(Ip,Port);
  4. client.connect(socketAddress, 3000);
  5. String msg="访问的服务器返回内容!";
  6. //得到socket读写流,向服务端程序发送数据
  7. client.getOutputStream().write(msg.getBytes());
  8. byte[] datas = new byte[2048];
  9. //从服务端程序接收数据
  10. client.getInputStream().read(datas);
  11. System.out.println(new String(datas));
  12. }catch(Exception e){
  13. e.printStackTrace();
  14. }finally {
  15. if (client != null) {
  16. try {
  17. client.close();
  18. } catch (IOException e) {
  19. System.out.println("systemerr:" +e);
  20. }
  21. }
  22. }
复制代码

例3:客户端的完整写法。

  1. try {
  2. //1.建立客户端socket连接,指定服务器位置及端口
  3. Socket socket =new Socket(Ip,Port);
  4. //2.得到socket读写流
  5. OutputStream os=socket.getOutputStream();
  6. PrintWriter pw=new PrintWriter(os);
  7. //输入流
  8. InputStream is=socket.getInputStream();
  9. BufferedReader br=new BufferedReader(new InputStreamReader(is));
  10. //3.利用流按照一定的操作,对socket进行读写操作
  11. String sendInfo="向服务器发送的数据信息!";
  12. pw.write(sendInfo);
  13. pw.flush();
  14. socket.shutdownOutput();
  15. //接收服务器的相应
  16. String replyInfo=null;
  17. while(!((replyInfo=br.readLine())==null)){
  18. System.out.println("接收服务器的数据信息:"+replyInfo);
  19. }
  20. //4.关闭资源
  21. br.close();
  22. is.close();
  23. pw.close();
  24. os.close();
  25. socket.close();
  26. } catch (UnknownHostException e) {
  27. e.printStackTrace();
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30. }
复制代码

关于Java Socket通信(一)之客户端程序 发送和接收数据的相关知识,小编就给大家介绍到这里,更多信息请登陆程序员之家网站了解更多内容!

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-7 18:12

Copyright 2015-2025 djqfx

返回顶部