java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP
无连接通信 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的更多相关文章
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- 006-UDP用户数据报文协议
一.概述 用户数据报协议(英语:User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报的传输层协议,正式规范为RFC 768. 在TCP/IP模型中 ...
- TCP(Transmission Control Protocol)学习笔记
一.TCP(Transmission Control Protocol)原理介绍(参考维基百科) TCP连接包括三种状态:连接建立.数据传送和连接终止. TCP用三路握手(three-way hand ...
- 传输控制协议--- Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP) 用于网络通信的传输控制和网络协议套件,包括很多协议,其中最主要的是TCP和IP协议.TCP/IP属于UNIX类系统的内置协议,被 ...
- Java模拟UDP通信
目录 Java基础:模拟UDP通信 1.一次发送,一次接收 1.1.发送方 1.2.接收方 2.多次发送,多次接收 2.1.发送方 2.2.接收方 3.模拟双方通信 3.1.发送方的线程 3.2.接收 ...
- Java基础之使用Scanner类获取用户输入
创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner 类的 next() 方法 import java.util.Scanne ...
- TCP之一:传输控制协议(Transmission Control Protocol, TCP)
TCP协议主为了在主机间实现高可靠性的包交换传输协议.本文将描述协议标准和实现的一些方法.因为计算机网络在现代社会中已经是不可缺少的了,TCP协议主要在网络不可靠的时候完成通信,对军方可能特别有用,但 ...
- Java 简单UDP通信
Java手册 java.net Class DatagramSocket java.lang.Object java.net.DatagramSocket All Implemented Interf ...
- Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.
1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...
随机推荐
- C# list.toArray list与数组的转换
void Start () { List<int> list = new List<int>(); list.Add(); list.Add(); list.Add(); li ...
- UGUI RectTransform 矩形变换
UGUI游戏对象基本都有这个组件. float radius; radius = GetComponent<RectTransform>().sizeDelta.x; radius = ( ...
- C# IO流 File.Exists,Directory.Exists, File.Create,Directory.CreateDirectory
void Start() { CreateDirectory(); CreateFile(); } //平台的路径(封装起来的一个属性,这不是一个方法) public string path { ge ...
- java代码混淆
仅做记录之用. java代码可以反编译,因此有时候要保护自己的知识产权还真得费点心思,一般来说有三个思路: 1.将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密 ...
- DEDE [field:global name=autoindex/] 按序列号递增
在用织梦仿站的时候,有些class样式是btn1.btn2这样的样式循环的,这个时候1.2可以用[field:global name=autoindex/ ] 循环得到,[field:global n ...
- macOS 从睡眠中恢复出来之后没有声音的解决方案
打开Active Monitor, 找到coreaudiod进程, 将其quit掉即可
- SpringBoot如何集成Jedis
添加jedis依赖 在项目pom.xml文件中添加依赖 <!-- 添加jedis依赖 --> <dependency> <groupId>redis.clients ...
- 从今天开始学习Swift--关于Swift (转)
WWDC2014推出了新的编程语言,大家都站在了新的起跑线上,希望转发的本文能对园内的朋友一点介绍和帮助,如果大家对swift感兴趣,欢迎踊跃利用google. 原文地址:http://www.coc ...
- wamp环境初步使用
在wamp的www目录下部署页面,localhost/目录/index.html
- SublimeText插件 : sass语法高亮
安装 :sublime中安装sass插件和sass build插件 就可以高亮显示sass 步骤:安装 sass插件和sass build (安装过程不细说) 步骤2:打开.sass文件,进行以下设 ...