服务器:

 import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class TcpServer {
public static void main(String [] args) throws IOException
{
@SuppressWarnings("resource")
ServerSocket server=new ServerSocket(8000);
Socket s=null;
DataOutputStream dataOut=null;
DataInputStream dataIn=null;
while(true){
try{
s=server.accept();
dataOut=new DataOutputStream(s.getOutputStream());
dataIn =new DataInputStream(s.getInputStream());
while(true){
Byte c=dataIn.readByte();
if(c=='0'){
System.out.println("执行继电器快关变换!");
dataOut.writeByte('Y');
}else if(c=='w'){
System.out.println("将温度值传给服务器!");
dataOut.writeByte(2);
}else if(c=='s'){
System.out.println("将深度值传给服务器!");
dataOut.writeByte(4);
}else{
System.out.println("错误命令返回!");
dataOut.writeByte('N');
}
}
}catch(IOException e){}
dataOut.close();
dataIn.close();
s.close();
}
}
}

客户端代码:

 /*
TCP客户端:输入命令从服务器获得数据
输入:0即开关继电器,当服务器执行好任务时返回89
w获得温度数据,服务器返回温度数据
s获得水深数据,服务器返回水深数据
其他输入均为无效输入,服务器返回78
PS:服务器只接受1个char,返回也是一个char,上述数据均为16进制
*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner; public class TcpClient {
public static void main(String [] args) throws IOException
{
Socket s = null;
DataInputStream DataIn = null;
DataOutputStream DataOut = null;
try {
//s=new Socket(InetAddress.getByName("192.168.1.130"),8000);
s=new Socket("localhost",8000);
DataIn = new DataInputStream(s.getInputStream());
DataOut=new DataOutputStream(s.getOutputStream());
System.out.println("连接成功");
@SuppressWarnings("resource")
Scanner keyIn= new Scanner(System.in);
while(keyIn.hasNext()){
String c=keyIn.nextLine();
System.out.println("输入: "+c);
if(c.length()==0)continue;
DataOut.writeByte(c.charAt(0));
System.out.println("收到: "+DataIn.readByte());
}
DataIn.close();
DataOut.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DataIn.close();
DataOut.close();
s.close();
}
}

[JAVA] Tcp客户端和服务器简单代码的更多相关文章

  1. Java的稀疏数组的简单代码实现

    目录 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 二.稀疏数组的Java代码实现思路 三.稀释数组的Java代码实现 四.结语 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 ...

  2. Java实验四 TCP客户端和服务器的应用

    实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全 4.对通信内容进行摘要计算并验证 实验步骤 1.信息安全传送: 发送方A——————>接收方B A加密时,用B ...

  3. TCP客户端 服务端详细代码

    本文章转自http://www.myexception.cn/program/1912019.html TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TC ...

  4. Java模拟客户端向服务器上传文件

    先来了解一下客户端与服务器Tcp通信的基本步骤: 服务器端先启动,然后启动客户端向服务器端发送数据. 服务器端收到客户端发送的数据,服务器端会响应应客户端,向客户端发送响应结果. 客户端读取服务器发送 ...

  5. Java 自定义客户端与服务器

    一:浏览器如何请求数据基本原理 基本原理: 当浏览器输入地址向服务器请求数据时,实际上浏览器会在内部建立一个Socket对象,把http请求报文转变成byet[]字节,然后调用Socket的方法把这些 ...

  6. java学习笔记——Java多客户端与服务器通信

    先说一下大概的思路: 应用多线程来实现服务器与多客户端之间的通信 1.服务器端创建ServerSocket,循环调用accept()等待客户端连接: 2.客户端创建一个Socket并请求与服务器端连接 ...

  7. [Java]Hessian客户端和服务端代码例子

    简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端.设计该hessian客户端和服务端的初衷是为了做一个 ...

  8. Socket TCP客户端和服务器的实现

    import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.S ...

  9. TCP客户端和服务器间传输数据遇到的TypeError: a bytes-like object is required, not 'str'问题

    使用python实现python核心编程3第472页和474页的TCP时间戳服务器和客户端服务器间数据传输编程时遇到TypeError: a bytes-like object is required ...

随机推荐

  1. MU-MIMO学习

    设备的认证查询 https://www.wi-fi.org/product-finder 1. MU-MIMO不会增大无线的最大速度 2. MU-MIMO需要路由器和客户端同时支持 3. 当你没有或者 ...

  2. 在 Ubuntu 16.04 LTS 上 离线安装 Docker / Docker-compose

    前情提要 今天上班后,突然接到现场的工程师的电话: XXX的现场环境组的的局域网,上不了互联网.bla bla bla..... 如果需要安装其他软件的话,只能是自己带过去安装... 听完现场工程师的 ...

  3. 【BZOJ】1756: Vijos1083 小白逛公园(线段树)

    题目 传送门:QWQ 分析 线段树维护一下最大子序列 维护一下最大前缀 最大后缀  区间和 就ok了 好像只能用结构体..... 代码 #include <bits/stdc++.h> u ...

  4. ubuntu16.04初始化配置

    允许root登录 sudo passwd root 启动网卡DHCP并配置DNS vi /etc/network/interfaces auto ens3 #auto lo iface ens3 in ...

  5. guicorn 是什么

    guicorn 是什么? 在回答问题之前我们先来看看 web服务器的典型过程[1] 1. 建立链接:如果没有连接,要建立连接 2. 接收请求:对客户端发来的请求进行解析. 3. 处理请求:转发给预定义 ...

  6. snmp获取设备相关管理信息

    在本文中,作者将向我们展示如何用snmp代理监视网络设备,甚至发送软件警告. 网络上很多代理在为我们服务.只要我们开启UDP/161,162端口,这些代理就会以Management Informati ...

  7. centos7.3部署django用uwsgi和nginx[亲测可用]

    现在nginx nginx version: nginx/1.10.2 uwsgi 2.0.17 django2.0.5 都已经完成完毕,那么开始 uwsgi 配置 uwsgi支持ini.xml等多种 ...

  8. IOS 上架要求视频及屏幕截屏

    客户提供上架的资料 1.IOS 上架要求视频演示,录制一段视频,上传到优酷,需要url连接. 2.手机截屏,每个尺寸5张.5s/6/6p *5=15张.截屏图片分辨率. iPhone4s手机 3.5I ...

  9. the difference between fopen&open

    [the difference between fopen&open] fopen是C标准API,open是linux系统调用,层次上fopen基于open,在其之上.fopen有缓存,ope ...

  10. DSOframer 的简单介绍和资源整理(2015-09-02重新整理)

    DSOframer 是微软提供一款开源的用于在线编辑 Word. Excel .PowerPoint 的 ActiveX 控件.国内很多著名的 OA 中间件,电子印章,签名留痕等大多数是依此改进而来的 ...