服务器:

 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. Java 字符串 String

    什么是Java中的字符串 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对 ...

  2. java中如何制定自定义异常

    package gys; public class ExpetionTest { public static void main(String[] args) { NumberCheck n=new ...

  3. 手工编写servlet

    index.jsp: <%@ page language="java" import="java.util.*" contentType="te ...

  4. [ML] Gradient Descend Algorithm [Octave code]

    function [theta, J_history] = gradientDescentMulti(X, y, theta, alpha, num_iters) m = length(y); % n ...

  5. 让别人能登陆你的mysql

    线上的数据库肯定是不能轻易在开发新功能的时候动的,如果你的数据库跟线上不一样了又没有新数据库的备份,就很麻烦. 当然去动线上数据库,出了什么问题我是不想背锅的. 最稳健的办法!让管理线上数据库的同学, ...

  6. Memo synEditor 当前行号

    Memo 当前行号,坐标,位置 可以使用Memo的属性CaretPos.X来取行鼠标所在行的行数与鼠标所在行的第几位 Memo.CaretPos.X 光标或鼠标所在行的列号(第几位),从0开始计数Me ...

  7. 跟我学算法-吴恩达老师的logsitic回归

    logistics回归是一种二分类问题,采用的激活函数是sigmoid函数,使得输出值转换为(0,1)之间的概率 A = sigmoid(np.dot(w.T, X) + b ) 表示预测函数 dz ...

  8. 一些js知识点总结

    1. 函数声明与函数表达式 解析器在像执行环境中加载数据时,会先读取函数声明,并使其在执行任何代码之前都可以访问,对于函数表达式,必须等到解析器执行到它所在的代码行,才会真正被执行. 例: alert ...

  9. 微信H5支付常见问题汇总

    常见问题 一.回调页面 正常流程用户支付完成后会返回至发起支付的页面,如需返回至指定页面,则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面. 如,您希望用户支付完成后跳转至 ...

  10. des,原理待续

    网络上转载的代码,忘记出处了请原作者见谅! des类 import java.security.*; import javax.crypto.*; /** * DES加解密算法 */ public c ...