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 ...
随机推荐
- [转]Loading, Editing, and Saving a Text File in HTML5 Using Javascript
本文转自:http://thiscouldbebetter.wordpress.com/2012/12/18/loading-editing-and-saving-a-text-file-in-htm ...
- (转)Python中的split()函数的用法
Python中的split()函数的用法 原文:https://www.cnblogs.com/hjhsysu/p/5700347.html Python中有split()和os.path.split ...
- ZK典型应用场景
1. 数据发布/订阅--动态获取数据 2.Master选举 a). 利用Zk会保证无法重复创建一个已经存在的节点 b). 多个客户端同时创建,创建成功的即是master,并监控master节点,一旦m ...
- 【client】与【offset】
上面主要区分了[offset]和[client]开头的各个属性的意义,下面这张图是转载的,又加入了[scroll]开头的,和元素本身的[style] clientWidth 是对象看到的宽度(不含 ...
- 错误处理(Operation Result)方法
自己开发的公众号,可以领取淘宝内部优惠券 问题 现在有一个FileStorageService类,继承自IStorageService,具体实现如下 public interface IStorage ...
- intellijidea课程 intellijidea神器使用技巧1-4 idea安装
idea安装 run intellij idea==>finish ==>do not import settings==>ok==>evaluate for free==&g ...
- 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
转自博客http://blog.csdn.net/xd195666916/article/details/5419316,同时感谢博主 今天做了个用hibernate直接执行原生sql的查询,报错No ...
- JSP 里 的 basePath
Eclipse新建JSP页面的时候不会加上 base 这个变量,需要手动添加,经常忘记,MyEclipse 就不用管了会自动添加. 如果忘了下面代码直接copy即可: <% String pat ...
- Java问题定位之Java线程堆栈分析
采用Java开发的大型应用系统越来越大,越来越复杂,很多系统集成在一起,整个系统看起来像个黑盒子.系统运行遭遇问题(系统停止响应,运行越来越慢,或者性能低下,甚至系统宕掉),如何速度命中问题的根本原因 ...
- zabbix3.0问题及解决方法
一.问题:Zabbix agent on T2 is unreachable for 5 minutes 解决:1.进入zabbix service端 vim /etc/zabbix/ ...