[JAVA] Tcp客户端和服务器简单代码

服务器:
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客户端和服务器简单代码的更多相关文章
- Java的稀疏数组的简单代码实现
目录 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 二.稀疏数组的Java代码实现思路 三.稀释数组的Java代码实现 四.结语 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 ...
- Java实验四 TCP客户端和服务器的应用
实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全 4.对通信内容进行摘要计算并验证 实验步骤 1.信息安全传送: 发送方A——————>接收方B A加密时,用B ...
- TCP客户端 服务端详细代码
本文章转自http://www.myexception.cn/program/1912019.html TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TC ...
- Java模拟客户端向服务器上传文件
先来了解一下客户端与服务器Tcp通信的基本步骤: 服务器端先启动,然后启动客户端向服务器端发送数据. 服务器端收到客户端发送的数据,服务器端会响应应客户端,向客户端发送响应结果. 客户端读取服务器发送 ...
- Java 自定义客户端与服务器
一:浏览器如何请求数据基本原理 基本原理: 当浏览器输入地址向服务器请求数据时,实际上浏览器会在内部建立一个Socket对象,把http请求报文转变成byet[]字节,然后调用Socket的方法把这些 ...
- java学习笔记——Java多客户端与服务器通信
先说一下大概的思路: 应用多线程来实现服务器与多客户端之间的通信 1.服务器端创建ServerSocket,循环调用accept()等待客户端连接: 2.客户端创建一个Socket并请求与服务器端连接 ...
- [Java]Hessian客户端和服务端代码例子
简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端.设计该hessian客户端和服务端的初衷是为了做一个 ...
- Socket TCP客户端和服务器的实现
import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.S ...
- TCP客户端和服务器间传输数据遇到的TypeError: a bytes-like object is required, not 'str'问题
使用python实现python核心编程3第472页和474页的TCP时间戳服务器和客户端服务器间数据传输编程时遇到TypeError: a bytes-like object is required ...
随机推荐
- [Java.web]EL表达式
<%@page import="cn.itcast.domain.Address"%> <%@page import="cn.itcast.domain ...
- MongoDB 生态 – 可视化管理工具
工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoD ...
- Beetlsql自定义生成entity,mapper,md代码
三个模板文件 mapper.btl package ${package}; import org.beetl.sql.core.annotatoin.*; import org.beetl.sql.c ...
- 分区恢复和NTFS文件恢复试验
一.实验室名称:主楼实验室A2-412 二.实验项目名称:分区恢复和NTFS文件恢复试验 三.实验学时:6学时 四.实验原理: 借助fdisk.diskgen软件对磁 ...
- Linux C多线程实现生产者消费者
今天学习了用Linux C进行线程的同步,实现类似生产者消费者的问题.下面我就来分享我的代码 #include<stdio.h> #include<pthread.h> #in ...
- iOS load和initialize的区别
可能有些还不清楚load和initialize的区别,下面简单说一下: 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我 ...
- IPMI (Intelligent Platform Management Interface)
4.3. ipmitool - utility for controlling IPMI-enabled devices 4.3.1. ipmitool 4.3.1.1. ubuntu 确定硬件是否支 ...
- mybatis框架入门程序:演示通过mybatis实现数据库的删除操作
1.mybatis的基本配置工作可以在我的这篇博客中查看:https://www.cnblogs.com/wyhluckdog/p/10149480.html 2.删除用户的映射文件: <!-- ...
- 洛谷 P3660 [USACO17FEB]Why Did the Cow Cross the Road III G(树状数组)
题目背景 给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数 题目描述 The layout of Farmer ...
- Java Thread系列(二)线程状态
Java Thread系列(二)线程状态 一.线程的五种状态 新建状态(New):新创建了一个线程对象,尚未启动. 就绪状态(Runnable):也叫可运行状态.线程对象创建后,其他线程调用了该对象的 ...