无连接通信 UDP

客户端

package com.swift.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner; /*使用UDP通信编写一个Java程序.要求:获取键盘输入的内容.发送到服务端.服务端接收后.在控制台上打印接收到的内容
客戶端
1.创建键盘录入对象.获取键盘录入数据
2.创建DatagramSocket对象
3.创建DatagramPacket对象.并封装键盘录入的数据
4.发送数据
5.释放流资源
服務端
1.创建DatagramSocket对象
2.创建DatagramPacket对象
3.接收数据存储到DatagramPacket对象中
4.获取DatagramPacket对象的内容
5.在控制台上打印接收到的内容
6.释放流资源
*/ public class DemoUDPClient { public static void main(String[] args) throws IOException { Scanner scan=new Scanner(System.in);
System.out.println("请输入要传达的内容:");
String str=scan.nextLine();
DatagramSocket datagramSocket=new DatagramSocket();
byte[] buf=str.getBytes();
DatagramPacket datagramPacket=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.105.22"),6464);
datagramSocket.send(datagramPacket);
datagramSocket.close();
} }

服务端

package com.swift.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; /*使用UDP通信编写一个Java程序.要求:获取键盘输入的内容.发送到服务端.服务端接收后.在控制台上打印接收到的内容
客戶端
1.创建键盘录入对象.获取键盘录入数据
2.创建DatagramSocket对象
3.创建DatagramPacket对象.并封装键盘录入的数据
4.发送数据
5.释放流资源
服務端
1.创建DatagramSocket对象
2.创建DatagramPacket对象
3.接收数据存储到DatagramPacket对象中
4.获取DatagramPacket对象的内容
5.在控制台上打印接收到的内容
6.释放流资源
*/ public class DemoUDPServer { public static void main(String[] args) throws IOException { DatagramSocket datagramSocket=new DatagramSocket(6464);
InetAddress ip=InetAddress.getLocalHost();
String ipString=ip.getHostAddress();
String nameString=ip.getHostName();
System.out.println(ipString+" "+nameString);
byte[] buf=new byte[1024];
DatagramPacket datagramPacket=new DatagramPacket(buf,1024);
datagramSocket.receive(datagramPacket);
System.out.println(new String(buf));
datagramSocket.close(); } }

结果

有连接通信TCP

客户端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket; /*使用socket编写一个Java程序,要求:客户端发送内容“我是客户端”到服务端,服务端接收后,在控制台上打印接收到的内容,并返回内容“我来自服务端”到客户端,客户端接收服务端的发送的内容后将接收内容打印在控制台
客户端
1.创建客户端的Socket对象
2.获取Socket的输出流对象
3.写数据给服务器
4.获取Socket的输入流对象
5.使用输入流,读反馈信息
6.关闭流资源
*/ public class DemoTCPClient { public static void main(String[] args) throws IOException { Socket s=new Socket(InetAddress.getByName("10.254.3.116"),8888);
OutputStream out=s.getOutputStream();
byte[] buf="我是客户端".getBytes();
out.write(buf);
InputStream in=s.getInputStream();
byte[] bytes=new byte[128];
in.read(bytes);
System.out.println(new String(bytes));
     s.close();
} }

服务端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket; /*使用socket编写一个Java程序,要求:客户端发送内容“我是客户端”到服务端,服务端接收后,在控制台上打印接收到的内容,并返回内容“我来自服务端”到客户端,客户端接收服务端的发送的内容后将接收内容打印在控制台 服务器端
1.创建服务器端ServerSocket对象,指定服务器端端口号
2.开启服务器,等待着客户端Socket对象的连接,如有客户端连接,返回客户端的Socket对象
3.通过客户端的Socket对象,获取客户端的输入流,为了实现获取客户端发来的数据
4.通过客户端的输入流,获取流中的数据
5.通过客户端的Socket对象,获取客户端的输出流,为了实现给客户端反馈信息
6.通过客户端的输出流,写数据到流中
7.关闭流资源*/ public class DemoTCPServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket=new ServerSocket(8888);
InetAddress ip=InetAddress.getLocalHost();
System.out.println(ip.getHostAddress());
Socket s=serverSocket.accept();
InputStream in=s.getInputStream();
byte[] buf=new byte[128];
in.read(buf);
System.out.println(new String(buf));
OutputStream out=s.getOutputStream();
out.write("我来自服务端".getBytes());
     serverSocket.close();
     s.close();
} }

多线程TCP

客户端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket; /*使用socket编写一个Java程序,要求:客户端发送内容“我是客户端”到服务端,服务端接收后,在控制台上打印接收到的内容,并返回内容“我来自服务端”到客户端,客户端接收服务端的发送的内容后将接收内容打印在控制台
客户端
1.创建客户端的Socket对象
2.获取Socket的输出流对象
3.写数据给服务器
4.获取Socket的输入流对象
5.使用输入流,读反馈信息
6.关闭流资源
*/ public class DemoTCPClient implements Runnable{ @Override
public void run() { Socket s = null;
try {
s=new Socket(InetAddress.getByName("10.254.3.116"),8888);
OutputStream out=s.getOutputStream();
byte[] buf=("I am Client."+InetAddress.getLocalHost().getHostName()).getBytes();
out.write(buf);
InputStream in=s.getInputStream();
byte[] bytes=new byte[128];
in.read(bytes);
System.out.println(new String(bytes));
} catch(Exception e){
e.printStackTrace();
} finally {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

服务端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket; /*使用socket编写一个Java程序,要求:客户端发送内容“我是客户端”到服务端,服务端接收后,在控制台上打印接收到的内容,并返回内容“我来自服务端”到客户端,客户端接收服务端的发送的内容后将接收内容打印在控制台 服务器端
1.创建服务器端ServerSocket对象,指定服务器端端口号
2.开启服务器,等待着客户端Socket对象的连接,如有客户端连接,返回客户端的Socket对象
3.通过客户端的Socket对象,获取客户端的输入流,为了实现获取客户端发来的数据
4.通过客户端的输入流,获取流中的数据
5.通过客户端的Socket对象,获取客户端的输出流,为了实现给客户端反馈信息
6.通过客户端的输出流,写数据到流中
7.关闭流资源*/ public class DemoTCPServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8888);
InetAddress ip = InetAddress.getLocalHost();
System.out.println(ip.getHostAddress()); while (true) {
Socket s = serverSocket.accept();
InputStream in = s.getInputStream();
byte[] buf = new byte[128];
in.read(buf);
System.out.println(new String(buf));
OutputStream out = s.getOutputStream();
out.write("I come from Server.".getBytes());
s.close();
}
} }

多线程开启多个客户端任务

package com.swift.test;

public class DemoTCPTest {

    public static void main(String[] args) {

        DemoTCPClient client=new DemoTCPClient();
Thread t1=new Thread(client);
Thread t2=new Thread(client);
Thread t3=new Thread(client);
t1.start();
t2.start();
t3.start();
} }

java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP的更多相关文章

  1. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

  2. 006-UDP用户数据报文协议

    一.概述 用户数据报协议(英语:User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报的传输层协议,正式规范为RFC 768. 在TCP/IP模型中 ...

  3. TCP(Transmission Control Protocol)学习笔记

    一.TCP(Transmission Control Protocol)原理介绍(参考维基百科) TCP连接包括三种状态:连接建立.数据传送和连接终止. TCP用三路握手(three-way hand ...

  4. 传输控制协议--- Transmission Control Protocol (TCP)

    Transmission Control Protocol (TCP) 用于网络通信的传输控制和网络协议套件,包括很多协议,其中最主要的是TCP和IP协议.TCP/IP属于UNIX类系统的内置协议,被 ...

  5. Java模拟UDP通信

    目录 Java基础:模拟UDP通信 1.一次发送,一次接收 1.1.发送方 1.2.接收方 2.多次发送,多次接收 2.1.发送方 2.2.接收方 3.模拟双方通信 3.1.发送方的线程 3.2.接收 ...

  6. Java基础之使用Scanner类获取用户输入

    创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner 类的 next() 方法 import java.util.Scanne ...

  7. TCP之一:传输控制协议(Transmission Control Protocol, TCP)

    TCP协议主为了在主机间实现高可靠性的包交换传输协议.本文将描述协议标准和实现的一些方法.因为计算机网络在现代社会中已经是不可缺少的了,TCP协议主要在网络不可靠的时候完成通信,对军方可能特别有用,但 ...

  8. Java 简单UDP通信

    Java手册 java.net Class DatagramSocket java.lang.Object java.net.DatagramSocket All Implemented Interf ...

  9. Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.

    1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...

随机推荐

  1. jemalloc报 Unsupported system page size错误

  2. ColorCtr控制颜色渐变

    ColorCtr控制颜色渐变 public class ColorCtr : MonoBehaviour { public static global_color Instance;         ...

  3. 当前activity透明度的获取与修改

    WindowManager.LayoutParams lp = getWindow().getAttributes();//layoutparams是静态类不能通过new来完成. lp.alpha = ...

  4. BigDecimal的使用举例,包括阶乘的相加求法思路

    对于高精度要求或者运算数较大的的计算,应该使用bigdecimal类实现 import java.math.BigDecimal; public class TestSysin { public st ...

  5. Cloudera Kudu是什么?

    不多说,直接上干货! Cloudera Kudu是什么? kudu是cloudera在2012开始秘密研发的一款介于hdfs和hbase之间的高速分布式列式存储数据库.兼具了hbase的实时性.hdf ...

  6. 虚拟机扩容(/dev/mapper/centos-root 空间不足)

    1:.首先查看我们的根分区大小是多少 df -h 文件系统                类型      容量  已用  可用 已用% 挂载点 /dev/mapper/centos-root xfs  ...

  7. Andrew Ng 的 Machine Learning 课程学习 (week5) Neural Network Learning

    这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛.这门课程对想要了解 ...

  8. EF Core 2.1 +数据库视图

    1.参考文档 https://stackoverflow.com/questions/36012616/working-with-sql-views-in-entity-framework-core ...

  9. python反爬之懒加载

    # 在平时的爬虫中,如果遇到没有局部刷新,没有字体加密,右键检查也能看到清晰的数据,但是按照已经制定好的解析规则进行解析时,会返回空数据,这是为什么呢,这时可以在网页右键查看一下网页源代码,可以发现, ...

  10. Excel 解析 (大文件读取)BingExcel

    最近在整理一个excel读取与写出的orm框架.使用的saxreader方式,支持百万级别的excel读取. 并且在通常使用中提供了监听的读取方式.如感兴趣的朋友可以稍微了解下 ,项目地址https: ...