网络编程

获取ip

InetAddress id = InetAddress.getLocalHost();                    // InetAddress id = InetAddress.getByName("www.baidu.com");

System.out.println(id);                                         // DESKTOP-S2V8PJF/192.168.0.35
System.out.println(id.getHostName()); // DESKTOP-S2V8PJF
System.out.println(id.getHostAddress()); // 192.168.0.35

UDP程序示例

发送端
public class Send {
public static void main(String[] args) {
try {
byte[] sendData = "发送的数据".getBytes();
InetAddress id = InetAddress.getByName("127.0.0.1");
DatagramPacket dp = new DatagramPacket(sendData, sendData.length, id, 9000);
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
try {
ds.send(dp);
} catch (IOException e) {
e.printStackTrace();
}
} catch (SocketException e) {
e.printStackTrace();
} finally {
ds.close();
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
} 接收端
public class Receive {
public static void main(String[] args) {
DatagramSocket ds = null;
DatagramPacket dp = null;
byte[] receiveData = new byte[1024];
try {
ds = new DatagramSocket(9000);
dp = new DatagramPacket(receiveData, receiveData.length);
try {
ds.receive(dp);
System.out.println("由" + dp.getAddress().getHostAddress()+ ":" + dp.getPort() + "发送的数据->" + new String(receiveData, 0, dp.getLength()));
} catch (IOException e) {
e.printStackTrace();
}
} catch (SocketException e) {
e.printStackTrace();
}finally {
ds.close();
}
}
}

TCP程序

客户端
public class ClientSide {
public static void main(String[] args) {
Socket so;
OutputStream os;
try {
so = new Socket("127.0.0.1", 9000);
os = so.getOutputStream();
os.write("我是 客户端".getBytes()); // 给服务器发送数据 InputStream in = so.getInputStream();
byte[] data = new byte[1024];
int len = in.read(data);
System.out.println(new String(data, 0, len)); // 接受服务器数据 so.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} 服务端
public class ServerSide {
public static void main(String[] args) {
ServerSocket ss;
Socket so;
OutputStream os;
try {
ss = new ServerSocket(9000);
so = ss.accept();
InputStream in = so.getInputStream();
byte[] data = new byte[1024];
int len = in.read(data);
System.out.println(new String(data, 0, len)); // 接受客户端数据 os = so.getOutputStream();
os.write("知道了".getBytes()); // 发送数据给客户端 os.close();
so.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

结语

本文章是java成神的系列文章之一

如果你想知道,但是本文没有的,请下方留言

我会第一时间总结出来并发布填充到本文

java成神之——网络编程基本操作的更多相关文章

  1. java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作

    ImmutableClass null检查 字符编码 default logger 函数可变参数 Nashorn JavaScript engine 执行脚本文件 改变js文件输出流 全局变量 2D图 ...

  2. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  3. 转载_2016,Java成神初年

    原文地址:http://blog.csdn.net/chenssy/article/details/54017826 2016,Java成神初年.. -------------- 时间2016.12. ...

  4. 20165310 Java实验五《网络编程与安全》

    20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...

  5. java成神之——Stream和Optional

    Stream流 基本使用 流关闭 平行流 流重用 iterator转换成流 分组计数 无限流 流转集合 压缩流 统计数值流 集合转换流遍历 流拼接 reduce 使用流生成随机字符串 流的包装流 几种 ...

  6. 一份完整的 Java 成神路线图,值得收藏!

    Java,是现阶段中国互联网公司中,覆盖度最广的研发语言. 有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的完整的Java成神路线图. 一:常见模式与工具 学习Java ...

  7. Java成神路上之设计模式系列教程之一

    Java成神路上之设计模式系列教程之一 千锋-Feri 在Java工程师的日常中,是否遇到过如下问题: Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式? 什么是设计模式?你是否在 ...

  8. Java基础教程:网络编程

    Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...

  9. java成神之——安全和密码

    安全和密码 加密算法 公钥和私钥加密解密 生成私钥和公钥 加密数据 解密数据 公钥私钥生成的不同算法 密钥签名 生成加密随机数 基本用法 指定算法 加密对象 SealedObject Signatur ...

随机推荐

  1. 支付宝VIE的罪与罚

    http://tech.ifeng.com/special/tusimple/alibaba/#_www_dt2   雅虎的杨致远.软银的孙正义,都曾是马云阿里巴巴创业路上的贵人,也都曾是相互信任的朋 ...

  2. ActionDescriptor 的认识

    ActionDescriptor的作用是对Action方法的元数据的描述,通过ActionDescriptor我们可以获取到action方法的相关的名称,所属控制器,方法的参数列表,应用到方法上的特性 ...

  3. Flask ajax 动态html 的javascript 事件失效

    $('.db_edit').click(function(){ $(".editdbproduct").val($(this).parent().parent().find('.e ...

  4. Makefile的补充学习

    通配符%和Makefile自动推导(规则)(1)%是Makefile中的通配符,代表一个或几个字母.也就是说%.o就代表所有以.o为结尾的文件.(2)所谓自动推导其实就是Makefile的规则.当Ma ...

  5. LeetCode OJ:Search a 2D Matrix(二维数组查找)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  6. 将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成

    将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成. 代码比较乱,但是方法还是对的,大家又需要的选择看,希望对博友 有帮助,欢迎留言分享! public class s ...

  7. 第1章 Flex介绍

    * Flex Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器.桌面和操作系统 ...

  8. 西交利物浦大学Java PAPER CODE: CSE105/12-13/S1/Resit Coursework

    Question 6:What is an accessor method?What is a mutator method? 答案参考:http://www.xmsydw.com Number An ...

  9. hexo配置主题发表文章

    将本地hexo博客部署到github上了,如果想换我们自己喜欢的主题(默认为landscape),同时也要发表发表文章呢,下面给介绍下: 1,进入hexo官网,预览自己想要的主题,https://gi ...

  10. [Luogu4169][Violet]天使玩偶/SJY摆棋子

    luogu 题意 一个平面上有\(n\)个点,\(m\)次操作,每次新增一个点,或者是询问离某个点最近的点的距离.这里的距离是曼哈顿距离. \(n,m\le3*10^5\) sol 写一发\(CDQ\ ...