/**
* TCP:传输控制协议,采用三方握手的方式,保证准确的连接操作。
* UDP:数据报协议,发送数据报,例如:手机短信或者是QQ消息。
*/ /**
* TCP服务器端程序
*/
public class Main {
public static void main(String[] args) {
try {
ServerSocket s1 = new ServerSocket(57712); //创建一个服务器端socket
System.out.println("服务器已启动,正在等待连接中....");
Socket s = s1.accept(); //等待客户端连接,会阻塞
String info = "Hello World ---\n";
//构造一个字节输出流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(info);
bw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* TCP客户端程序
*/
public class ClientDemo {
public static void main(String[] args){
try {
System.out.println("good");
//创建一个客户端的socket对象(IP/主机名,端口号)
Socket s1 = new Socket("172.31.150.27",57712);
System.out.println("与服务器连接成功");
//构造一个字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(s1.getInputStream()));
String info = br.readLine();
System.out.println(info);
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* ECHO服务器端程序
*/
public class Main {
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(12347);
System.out.println("Server has started. is Waiting....");
boolean flag = true;
while(flag){
System.out.println("is waiting for connection....");
Socket s0 = s.accept();
System.out.println("客户端IP:"+s0.getInetAddress().getHostAddress()+" 已连接!");
//获取输入输出流
BufferedReader br = new BufferedReader(
new InputStreamReader(s0.getInputStream()));
PrintStream ps = new PrintStream(
new BufferedOutputStream(s0.getOutputStream()));
boolean bool = true; //循环接收数据
while(bool){
String info = br.readLine();
if(info==null || "bye".equals(info)){
bool = false;
}else{
System.out.println(info);
ps.println("echo:"+info);
ps.flush();
}
}
ps.close();
br.close();
}
}
}
/**
* ECHO客户端程序
*/
public class ClientDemo {
public static void main(String[] args) throws IOException{
//创建一个客户端的socket对象(IP/主机名,端口号)
Socket s0 = new Socket("172.31.150.27",12347);
System.out.println("与服务器连接成功");
Scanner input = new Scanner(System.in);
boolean flag = true;
PrintStream ps = new PrintStream(
new BufferedOutputStream(s0.getOutputStream()));
BufferedReader br = new BufferedReader(
new InputStreamReader(s0.getInputStream()));
while(flag){
System.out.println("请输入:");
String info = input.next();
if("bye".equals(info)){
flag = false;
}else{
ps.println(info);
ps.flush();
System.out.println(br.readLine());
}
}
br.close();
ps.close();
}
}

JAVA笔记15__TCP服务端、客户端程序 / ECHO程序 /的更多相关文章

  1. WebSocket集成XMPP网页即时通讯1:Java Web Project服务端/客户端Jetty9开发初探

    Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事, ...

  2. Java Tomcat SSL 服务端/客户端双向认证

    借花献佛:http://www.blogjava.net/icewee/archive/2012/06/04/379947.html

  3. JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)

    前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...

  4. gprc-java与golang分别实现服务端,客户端,跨语言通信(一.java实现)

    1.在pom中引入 <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty< ...

  5. 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice

    一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...

  6. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...

  7. TCP/IP网络编程之基于UDP的服务端/客户端

    理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...

  8. TCP/IP网络编程之基于TCP的服务端/客户端(一)

    理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...

  9. 手写内网穿透服务端客户端(NAT穿透)原理及实现

    Hello,I'm Shendi. 这天心血来潮,决定做一个内网穿透的软件. 用过花生壳等软件的就知道内网穿透是个啥,干嘛用的了. 我们如果有服务器(比如tomcat),实际上我们在电脑上开启了服务器 ...

随机推荐

  1. 洛谷P1582——倒水(进制,数学)

    https://www.luogu.org/problem/show?pid=1582 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了 ...

  2. 使用Java api对HBase 2.4.5进行增删改查

    1.运行hbase 2.新建maven项目 2.将hbase-site.xml放在项目的resources文件夹下 3.修改pom.xml文件,引入hbase相关资源 <repositories ...

  3. 远程线程注入突破SESSION 0

    远程线程注入突破SESSION 0 SESSION 0 隔离 在Windows XP.Windows Server 2003,以及更老版本的Windows操作系统中,服务和应用程序使用相同的会话(Se ...

  4. Java面向对象系列(3)- 回顾方法的调用

    方法的调用 静态方法 非静态方法 形参和实参 值传递和引用传递 this关键字(继承篇讲解) 静态方法 非静态方法 形参和实参 package oop.demo01; public class Dem ...

  5. 在Ubuntu18.04安装docker之后,以登陆用户身份执行docker pull jenkins,报错:connect: permission denied

    Using default tag: latest Got permission denied while trying to connect to the Docker daemon socket ...

  6. CF1251F-Red-White Fence【NTT】

    前言 刚开始看错题推了半天的生成函数 正题 题目链接:https://www.luogu.com.cn/problem/CF1251F 题目大意 $n$个白色木板,$k$个红色木板,给出这些木板的高度 ...

  7. Windows下CMake编译安装OpenCV

    Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ...

  8. redis无法连接

     Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redi ...

  9. Python下载课件

    from urllib.request import urlretrieve # #下载网络文件到本地 import os os.chdir("C:/Users/RankFan/Deskto ...

  10. 一、mybatis入门案例

    今天学习了mybatis框架,简单记录一下mybatis第一个入门案例,目标是使用Mybatis作为持久层框架,执行查询数据的SQL语句并且获取结果集 基本步骤: 物理建模 逻辑建模 引入依赖 创建持 ...