JAVA笔记15__TCP服务端、客户端程序 / ECHO程序 /
/**
* 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程序 /的更多相关文章
- WebSocket集成XMPP网页即时通讯1:Java Web Project服务端/客户端Jetty9开发初探
Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事, ...
- Java Tomcat SSL 服务端/客户端双向认证
借花献佛:http://www.blogjava.net/icewee/archive/2012/06/04/379947.html
- JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...
- gprc-java与golang分别实现服务端,客户端,跨语言通信(一.java实现)
1.在pom中引入 <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty< ...
- 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...
- TCP/IP网络编程之基于UDP的服务端/客户端
理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(一)
理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...
- 手写内网穿透服务端客户端(NAT穿透)原理及实现
Hello,I'm Shendi. 这天心血来潮,决定做一个内网穿透的软件. 用过花生壳等软件的就知道内网穿透是个啥,干嘛用的了. 我们如果有服务器(比如tomcat),实际上我们在电脑上开启了服务器 ...
随机推荐
- Django学习day15BBS项目开发4.0(完结)
每日测验 """ 今日考题: 1.简述自定义标签,过滤器,inclusion_tag的方法,并简要说一说三者的特点及响应流程 2.简述个人侧边栏展示及筛选业务逻辑 3.简 ...
- web自动化:IE11运行Python+selenium程序
from selenium import webdriver # 运行此脚本前必须按要求修改注册表'''[HKEY_CURRENT_USER\Software\Microsoft\Internet E ...
- P5934-[清华集训2012]最小生成树【最小割】
正题 题目链接:https://www.luogu.com.cn/problem/P5934 题目大意 给出\(n\)个点\(m\)条边的一张图,再加入一条边\((u,v,L)\)求至少删掉多少条边可 ...
- "错误: 找不到或无法加载主类"解决办法
前言:记上次一个找了个把小时的问题(很烦这些配置) 原因: 从svn下checkOut的项目 在application的配置的输出class路径为main,而class文件路径是在项目名的根路径下,所 ...
- Spring Cloud Gateway 雪崩了,我 TM 人傻了
本系列是 我TM人傻了 系列第六期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了 获取异 ...
- SDA 课程
课件总览 Slide1:Data Science & Digital Society Slide2:DEDA Digital Economy & Decision Analytics ...
- Java实现两数之和等于二十
找出数组中两个数字之和为20的两个数 代码实现 public static void main(String[] args) { // TODO Auto-generated method stub ...
- windows下编译caffe出现错误 C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe?
解决方案来自http://blog.csdn.net/u012556077/article/details/50353818
- Filter防火墙
实验简介 实验属于防火墙系列 实验目的 了解个人防火墙的基本工作原理: 掌握Filter防火墙的配置. 实验环境 一台安装了win7操作系统的主机. 预备知识 防火墙 防火墙(Firewall)是一项 ...
- Android应用开发特色
目录 Android应用开发特色 四大组件 Activity Service Broadcastreceiver Contentprovider 丰富的系统控件 Sqlite数据库 强大的多媒体 An ...