开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2738|回复: 1
收起左侧

[android教程] 网络编程TCP协yi和UDP协yi

[复制链接]
结帖率:43% (6/14)
发表于 2018-1-5 22:07:03 | 显示全部楼层 |阅读模式   江苏省南京市
  网络编程的三要素
  协yi:就是两个设备之间的一个通信协yi(建立的规范或者规则:UDP,TCP)
  
  IP:就是每个设备的唯一标识
  
  端口:在设备中,每个进程唯一标识.范围(0-65535)

                   UDP的特点:
                                     面向无连接,效率高,安全性低,发生数据的大小有限制64k
                  TCP协yi的特点
                                     面向连接(三次握手),效率低,安全性高,没有数据的大小限制




  UDP发送端和接收端
  1. package com.wwangluo_1;

  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. import java.net.SocketException;
  7. import java.net.UnknownHostException;

  8. public class SendDemo {
  9.         public static void main(String[] args) throws SocketException, IOException {
  10.                 // 创建发送端对象
  11.                 DatagramSocket d = new DatagramSocket();

  12.                 // 创建数据
  13.                 String s = "Hell World";

  14.                 // 封装数据
  15.                 byte[] by = s.getBytes();
  16.                 int length = by.length;
  17.                 InetAddress ia = InetAddress.getByName("替换本地ip");
  18.                 int port = 8888;
  19.                 // 打包数据
  20.                 DatagramPacket dp = new DatagramPacket(by, length, ia, port);

  21.                 // 发送数据
  22.                 d.send(dp);

  23.                 // 释放资源
  24.                 d.close();

  25.         }
  26. }
复制代码
  1. package com.wwangluo_1;

  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. import java.net.SocketException;

  7. public class DataDemo {
  8.         public static void main(String[] args) throws IOException {
  9.                 // 创建接收端对象
  10.                 DatagramSocket ds = new DatagramSocket(8888);

  11.                 // 接收数据
  12.                 byte[] by = new byte[1024];
  13.                 // 封装接收数据
  14.                 DatagramPacket dp = new DatagramPacket(by, by.length);
  15.                 ds.receive(dp);

  16.                 // 解析获取的数据
  17.                 InetAddress addres = dp.getAddress();
  18.                 int length = dp.getLength();

  19.                 System.out.println("Sender---->" + addres.getHostAddress());
  20.                 System.out.println(new String(by, 0, length));

  21.                 // 释放资源
  22.                 ds.close();
  23.         }
  24. }
复制代码


  TCP客户Duan和服务端
  1. package com.wwangluo_2;

  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.InetAddress;
  6. import java.net.Socket;
  7. import java.net.UnknownHostException;

  8. public class ClientDemo {
  9.         /*
  10.          * 利用TCP协yi完成以下需求: 客户Duan发给服务端 数据 服务端将客户Duan发送过来的数据中的 字母全部转换为大写,写给客户Duan 客户Duan打印转换后的数据
  11.          */
  12.         public static void main(String[] args) throws IOException {
  13.                 // 创建客户Duan对象
  14.                 Socket s = new Socket(InetAddress.getByName("替换本地ip地址"), 8888);

  15.                 // 获取输出流对象
  16.                 OutputStream os = s.getOutputStream();

  17.                 // 发送数据
  18.                 String str = "hello";

  19.                 byte[] bys = str.getBytes();

  20.                 os.write(bys);

  21.                 // 接收服务端数据
  22.                 InputStream is = s.getInputStream();
  23.                 byte[] newbys = new byte[1024];
  24.                 int len = is.read(newbys);
  25.                 System.out.println(new String(newbys, 0, len));

  26.                 // 释放资源
  27.                 s.close();
  28.                 os.close();

  29.         }

  30. }
复制代码
  1. package com.wwangluo_2;

  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;

  7. public class ServerDemo {
  8.         public static void main(String[] args) throws IOException {
  9.                 // 创建服务端对象
  10.                 ServerSocket ss = new ServerSocket(8888);

  11.                 // 获取客户Duan传输数据的对象
  12.                 Socket s = ss.accept();

  13.                 // 获取输入流对象
  14.                 InputStream is = s.getInputStream();

  15.                 byte[] bys = new byte[1024];

  16.                 int len = is.read(bys);

  17.                 String str = new String(bys, 0, len);

  18.                 // 把获取到的数据转换大写
  19.                 String newstr = str.toUpperCase();

  20.                 // 创建输出流对象

  21.                 OutputStream os = s.getOutputStream();

  22.                 os.write(newstr.getBytes());

  23.                 s.close();

  24.         }
  25. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
结帖率:100% (2/2)
发表于 2018-1-22 15:08:06 | 显示全部楼层   湖北省黄冈市
用Mina 更方便
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表