文章目录

  • Socket UDP、TCP 简介
    • 1.1 Java 获取 IP、URL
    • 1.2 UDP 服务端\客户端
    • 1.3 TCP 服务端/客户端

Socket UDP、TCP 简介

1.1 Java 获取 IP、URL

//获取IP
public class IPDemo {public static void main(String[] args) throws UnknownHostException {//获取本地IP:主机名  / 127.0.0.1  /  localhostInetAddress ip=InetAddress.getByName("gudu");System.out.println(ip);System.out.println(ip.getHostAddress()); //返回IPSystem.out.println(ip.getHostName());    //返回计算机名System.out.println(ip.getLocalHost());     //获取本地主机IPSystem.out.println("-----------------------获取网络IP------------------------");InetAddress baiduIP=InetAddress.getByName("www.baidu.com");System.out.println(baiduIP);}}
//获取url
public class URLDemo {public static void main(String[] args){InputStream in=null;OutputStream out=null;//给定一个URL地址try {URL url=new URL("");//建立通道URLConnection conn=url.openConnection();//通过URLConnection对象获取对象流in=conn.getInputStream();File file =new File("D:URL");if(!file.exists()){file.mkdirs();//创建文件夹}out=new FileOutputStream(file.getPath()+"/"+"pag.png");byte[] buf=new byte[1024];int len =-1;System.out.println("下载开始........");while(-1!=(len=in.read(buf))){out.write(buf, 0, len);}System.out.println("下载成功........");} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {out.close();} catch (IOException e) {e.printStackTrace();}try {in.close();} catch (IOException e) {e.printStackTrace();}}}}

1.2 UDP 服务端\客户端

//建立UDP的接收端
public class ReceiveDemo {public static void main(String[] args) throws IOException {//1.建立UDP Socket 接收端对象(DatagramSocket),因为要接收数据库,所以指明一个端口DatagramSocket ds =new  DatagramSocket(10003);System.out.println("接收端启动.........");//2.创建数据报包对象 ( DatagramPacket )byte[] buf=new byte[1024];DatagramPacket dp=new DatagramPacket(buf, buf.length);//3.使用  receive() 方法接受数据报包ds.receive(dp);//阻塞//4.通过数据报包对象的方法获取信息byte[] data=dp.getData();                  //获取发送过来的数据InetAddress ip=dp.getAddress();      //获取发送端的IPint port=dp.getPort();                       //获取发送端的端口号System.out.println(ip+"说了"+new String(data,0,dp.getLength()));ds.close();                                          //关闭流}
}/*** 字节数组 +Data 输入流* @param data* @return* @throws IOException */
public static double convert(byte[] data) throws IOException{DataInputStream dis =new DataInputStream(new ByteArrayInputStream(data));double num =dis.readDouble();  //此输入流的下八个字节,将它们解释为一个 doubledis.close();return num;
}//建立UDP的发送端
public class SendDemo {public static void main(String[] args) throws IOException {//1.建立UDP的DatagramSocket对象,指明对外的端口号DatagramSocket ds=new DatagramSocket(10002);System.out.println("发送端启动........");//2.通过DatagramPacket对象进行打包操作byte[] buf="测试,我爱你".getBytes();DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("127.0.0.1"),10003);//3.通过 DatagramSocket的 send() ,将数据报包发送到指定接收端ds.send(dp);ds.close();}
}/*** 字节数组 数据源  +Data 输出流* @param num* @return* @throws IOException */
public static byte[] convert(double num) throws IOException{byte[] data =null;ByteArrayOutputStream bos = new ByteArrayOutputStream();DataOutputStream dos =new DataOutputStream(bos);dos.writeDouble(num);      // 将一个 double 值写入输出流dos.flush();//获取数据data = bos.toByteArray();  // 创建一个新分配的 byte 数组其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中。 dos.close();      return data;}
}

1.3 TCP 服务端/客户端

//TCP协议传输 : 服务器端的建立
/**步骤* 1.创建TCP服务器端的对象(ServerSocket)* 2.调用accept()方法获取连接带过来的客户端的Socket对象* 3.通过客户端的Scoket对象获取IO流来读取数据* 4.*/
public class ServerDemo {public static void main(String[] args) throws IOException {ServerSocket server=new ServerSocket(10001);Socket client=null;InputStream in=null;System.out.println("服务器启动........");boolean b=true;while(b){client=server.accept( );          //侦听并接受到此套接字的连接in=client.getInputStream();    //返回此套接字的输入流。byte[] buf=new byte[1024];int len=in.read(buf);InetAddress ip=client.getInetAddress();System.out.println(ip+"说"+new String(buf,0,len));}server.close();client.close();}}//TCP协议传输 : 客户端的建立
/**步骤* 1.创建TCP客户端的对象(Socket)* 2.如果和服务器连接成功,通过Socket对象获取IO流* 3.使用IO流,对数据操作* 4.关闭资源*/
public class ClientDemo {public static void main(String[] args) throws  IOException {Socket client=new Socket("127.0.0.1",10001);OutputStream out=client.getOutputStream();out.write("你好Server".getBytes());client.close();}}

Socket UDP、TCP 简介相关推荐

  1. socket UDP TCP 的一些用法

    UDP 用最通俗的话讲,所谓UDP,就是发送出去就不管的一种网络协议.因此UDP编程的发送端只管发送就可以了,不用检查网络连接状态.下面用例子来说明怎样编写UDP,并会详细解释每个API和数据类型. ...

  2. php udp发送和接收_php socket通信(tcp/udp)实例分析

    本文实例讲述了php socket通信(tcp/udp)方法.分享给大家供大家参考,具体如下: 注意 1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1 2.server.p ...

  3. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程

    目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...

  4. 网络编程 socket模块 tcp协议 udp协议

    网络基础相关知识 , socket模块 , tcp协议通信代码 , tcp和udp编码流程 网络基础相关知识(1) 架构 C / S 架构: client 客户端 和 server 服务器端 优势:能 ...

  5. linux网络编程IPv6socket,简单的IPv6 UDP/TCP socket编程 -- 两台Linux实现简单的ipv6通信...

    配置: 1.两台linux用网线直接相连 2.手动配置两台linux的ipv6地址为: ifconfig eth0 add 2001:da8:e000::1:1:1 ifconfig eth0 add ...

  6. asp.core api 通过socket和服务器通信发送udp_python socket之TCP/UDP

    #coding=utf-8 # socket #网络中进程之间通信:网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应 ...

  7. [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

    很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识   ...

  8. 网络编程—网络基础概览、socket,TCP/UDP协议

    网络基础概览 socket概览 socket模块-TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网 ...

  9. Python网络编程——socket套接字实现UDP/TCP信息传输

    socket套接字 socket(简称 套接字) ,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来 ...

最新文章

  1. [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)
  2. (BAE)jetty8+struts2导致 welcome-file-list 失效
  3. 软件工程个人作业(2)
  4. 五种方法提高你的智力
  5. 【结论】串串串(nowcoder 20107-A)
  6. 编程之美--读书笔记--返回一个数组中所有元素被第一个元素除的结果
  7. C++与QML交互(信号与槽通知QML,C++注册QML,QML结点映射C++类)
  8. PostgreSQL 13 Beta 1 发布,大量新特性
  9. coreseek mysql_coreseek (sphinx)+ Mysql + Thinkphp搭建中文搜索引擎详解
  10. 【超图+CESIUM】【基础API使用示例】31、超图|CESIUM -【坐标转换】屏幕坐标转世界坐标
  11. 解决 java.sql.SQLException: ORA-01688: unable to extend table XXX partition YYY by 1024 in tablespace
  12. Delphi使用CEF4Delphi制作Chromium谷歌内核浏览器
  13. Android:规范命名,让合作更加愉快
  14. python简历项目经验在哪里找_Linux运维工程师简历项目经验
  15. 了解MOS管开通和关断过程原理特性分析
  16. 2018年世界计算机销售排名,2018年第二季全球笔记本电脑出货量排名
  17. SVN冲突解决方案总结
  18. 【老孙点评】古人读书十二法
  19. vue移动端禁止双击放大
  20. 网络音乐收费箭在弦上:下载付费成必然

热门文章

  1. Java Online IDE
  2. android 子页面如何调用父页面函数,Android 调用父类方法,进行子界面刷新
  3. 百度地图查看导航记录,导航路线,记录驾驶路线
  4. 基于大数据分析技术实现对信用卡盗刷的预防
  5. 笔记本电脑更改计算机驱动怎么进不去,笔记本电脑进入不了BIOS的原因与解决办法...
  6. Java日历设计思路
  7. python爬取天极网手机信息代码
  8. 大数据入门-大数据技术概述(一)
  9. 浅谈单线程的Redis快的原因是什么
  10. android开发banner框架,Android 轮播图 最火的banner框架 (包含demo和代码解释)