/**
* 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. 如何点击穿透Electron不规则窗体的透明区域

    实现一个不规则窗体 这里我们实现一个圆形窗体,实现其他形状的窗体与这个方法类似. 首先,把窗口的高度(height)和宽度(width)值修改为相同的值,使窗口成为一个正方形. 其次,把窗口的透明属性 ...

  2. java eclipse 使用随笔

    1,无法import java.awt. 等各种文件,解决办法:(在module-info.java文件中加入requires java,desktop这句话)

  3. nextcloud 中文乱码解决方案

    参考地址 :https://www.yht7.com/news/13909 我是使用的第二种方法, 修改/nextcloud/lib/public/AppFramework/Http/FileDisp ...

  4. 『GoLang』面向对象

    我们总结一下前面看到的:Go 没有类,而是松耦合的类型.方法对接口的实现. 面向对象语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢? Go实现面向对象的两个关键是stru ...

  5. 『GoLang』接口

    接口是什么 Go 语言不是一种 "传统" 的面向对象编程语言:它里面没有类和继承的概念. 但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多面向对象的特性.接口提供了一 ...

  6. 虚拟机安装配置centos7

    安装 https://blog.csdn.net/babyxue/article/details/80970526 主机环境预设 更换国内yum源 epel源 https://www.cnblogs. ...

  7. P4542-[ZJOI2011]营救皮卡丘【费用流,Floyd】

    正题 题目链接:https://www.luogu.com.cn/problem/P4542 题目大意 给出\(n+1\)个点\(m\)条边的无向图,\(k\)个人开始在\(0\)号点,一个人进入\( ...

  8. Python接口自动化测试概念以及意义

    接口定义: 接口普遍有两种意思,一种是API(Application Program Interface),应用编程接口,它是一组定义.程序及协议的集合,通过API接口实现计算机软件之间的相互通信.而 ...

  9. 位运算符的用法 ----非(!),与(&),或(|),异或(^)

    位运算符的用法 ----非(!),与(&),或(|),异或(^) 三种运算符均针对二进制 非!:是一元运算符.对一个二进制的整数按位取反,输入0则输出1,输入1则输出0. 例: 0100 -( ...

  10. 实现js读取Excel数据

    如何通过js去读取excel中的数据 <!DOCTYPE html> <html lang="en"> <head> <meta char ...