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 ...
随机推荐
- [转]jquery插件创建 jquery.fn.extend与jquery.extend
本文转自:http://www.cnblogs.com/wyjgreat/archive/2011/07/19/2110754.html jQuery为开发插件提拱了两个方法,分别是: JavaScr ...
- https的设计原理
参考文章: https://www.cnblogs.com/zhangshitong/p/6478721.html http://blog.jobbole.com/113883/ 这两篇文章写的非常好 ...
- 利用nginx的fastcgi_cache模块来做缓存
nginx不仅有个大家很熟悉的缓存代理后端内容的proxy_cache,还有个被很多人忽视的fastcgi_cache. proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的 ...
- PHP的htmlspecialchars、strip_tags、addslashes解释
第一个函数:strip_tags,去掉 HTML 及 PHP 的标记 注意:本函数可去掉字串中包含的任何 HTML 及 PHP 的标记字串.若是字串的 HTML 及 PHP 标签原来就有错,例如少了大 ...
- UVA 10462 —— Is There A Second Way Left?——————【最小生成树、kruskal、重边】
Nasa, being the most talented programmer of his time, can’t think things to be so simple. Recently a ...
- return break continue区别
return:1.跳出整个方法体 2.返回值 function(a){return a=2}; break:跳出当前循环, continue:跳出当前判断继续执行
- poj 3107 删点最大分支最小
http://poj.org/problem?id=3107 这实际上就是找重心,在之前有做过:http://www.cnblogs.com/qlky/p/5780933.html #include ...
- css3 animatehue属性
-webkit-perspective(-moz,-o,perspective下同)表示透视范围大小: -webkit-transform-style很好理解了,表示变换类型,preserve-3d看 ...
- Android - 开发页面需了解的dip,sp,px知识,以及它们的转换
工作中,时常会有任务要求开发新页面,这时一般的流程是产品经理确定要开发的页面和功能,然后设计师提供设计稿,之后由我们开发人员完成开发工作. 通常,设计师提供的设计稿尺寸标注会很详细,例如涉及到字时,字 ...
- Struts2_动态结果集
页面请求: <li><a href="user/user?type=1">返回success</a></li> <li> ...