无连接通信 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. Unity 去除场景中的雾效果

    Windows——Lighting——Setting,然后出现下面窗口,把Other Setting下,Fog的对勾去掉就可以了.

  2. Django自定义过滤器

    1.首先在在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建templatetags模块(模块名只能是temp ...

  3. bcc-tools安装

    1           一. 安装cmake cmake是一种跨平台的编译工具,安装过程如下: 下载源码包:https://cmake.org/files/v3.8/cmake-3.8.0.tar.g ...

  4. android shape.xml 属性详解

    转载源:http://blog.csdn.net/harvic880925/article/details/41850723 一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标 ...

  5. LeetCode 110.平衡二叉树(C++)

    给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 1: 给定二叉树 [3,9,20,null,nu ...

  6. 使用CSS选择器进行元素定位

    在selenium webdriver中,支持使用CSS选择器来进行元素定位,事实在真的投入工作,大量编辑用例和元素定位的时候,使用css 和 xpath才是经常需要用到的. 之前有专门讲过使用xpa ...

  7. MVC4笔记 @functions @model @using

    /////@functions自定义函数////// @helper辅助方法的确可以很方便的完成辅助方法开发,不过却失去了一些弹性,例如,无法在@helper中自定义属性,只能单纯的传入参数,然后格式 ...

  8. GDI+图形图像处理技术——GDIPlus绘图基础

    GDI+概述 GDI在windows中定义为Graphis Device interface,及图形设备接口,是Windows API(application Programming Interfac ...

  9. promise之nodejsQ的详细用法总结

    这里主要讲node.js中Q的各种用法及说明总结,不详细介绍promise及原理.关于promise介绍可以查看我的另一篇文章: https://www.cnblogs.com/yzeng/p/976 ...

  10. Oracle 求昨天 上个月 去年 日期

    到公司发现有一个报表没有收到,查看后发现原来是Oracle数据源异常. ' day, 'yyyyMMdd') AS enddata FROM DUAL; 上面这个sql求上个月今天和昨天.一般情况下不 ...