TCP数据交互

服务器端:

public class Server {
    private static ServerSocket server=null;
    private static PrintWriter out=null;
    private static BufferedReader  reader=null;
    private static Map<String,Socket> userMessages=new Hashtable<String, Socket>();
    private static void first(){
        try {
            //服务器启动
            server=new ServerSocket(1888);
            while(true){
                //有客户连接时
                Socket client=server.accept();
                //保存客户端信息,ip、socket
                userMessages.put(client.getInetAddress().getHostAddress(), client);
                //开辟线程处理数据
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            //取得输出流
                            out=new PrintWriter(client.getOutputStream(),true);
                            //取得输入流
                            reader=new BufferedReader(new InputStreamReader(client.getInputStream(),"utf-8"));
                            out.println("欢迎登陆");
                            String message=reader.readLine();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(server!=null){
                try {
                    server.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) {
        first();
    }
}

客户端:

public class Client {
    private static Socket client = null;
    private static PrintWriter out = null;
    private static BufferedReader reader = null;
    public static void main(String[] args) {
        try {
            client=new Socket("192.168.1.102",1888);
            out=new PrintWriter(client.getOutputStream().true);
            reader=new    BufferedReader(new InputStreamReader(client.getInputStream()));
            //向服务器发送信息
            out.println("");
            //服务器发送过来的数据保存到变量
            String message=reader.readLine();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-10-12 04:38:44

TCP数据交互的相关文章

TCP移动端跟服务器数据交互

同一台笔记本下的客户端和服务端 TCPClient 客户端: //  RootViewController.h#import <UIKit/UIKit.h>#import "AsyncSocket.h"  //封装了基于tcp协议的socket编程//tcp协议是位于网络传输层的协议,规定客户端与服务端之间.或者是客户端与客户端之间数据通信的方式//每个客户端或者服务端通过ip地址+端口来标识/*客户端与服务端基于tcp协议进行数据通信 *1.客户端需要通过ip+端口连接指

《TCP/IP详解》之二:流式数据交互

和UDP这种“滚珠”式的协议不同(一份数据就是一个udp packet),TCP以报文段的方式传递数据,其大小受网络链路的限制.在SYN报文段中互相通告最大报文段长(MSS).所以业务层交付的数据,会被TCP拆分/合并为合适的报文段(这也就是为嘛TCP数据跟水流似的,没有边界). 对于每个报文段而言,就很像UDP的“滚珠”了,不保证顺序.不保证到达.TCP要对收到的报文重新排序,再才交给应用层.发出一个报文段后,会启动一个定时器,等待对端ACK确认收到,否则将重传该报文.由于重传机制,报文段可能

系统间数据交互的方案探讨

===================================== 互联网时代, 1等公民是建立规范和协议的人 2等公民是提供服务的人 3等公民是开发软件的人 4等公民是卖硬件的人 ===================================== 信息系统的普及应用导致原有系统间的信息孤岛需要通过系统间接口进行数据交互,信息交互的接口常见有以下几种: (1)数据库交互:服务方提供表或存储过程,由调用方控制commit或rollback. (2)文件交互:双方对请求文件各应答文件

《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

《网络协议》TCP 的交互数据流

前言 TCP 报文段所携带的应用程序数据按照长度分为两种:交互数据和成块数据.交互数据仅包含很少的字节.使用交互数据的应用程序(或协议)对实时性要求高,比如 Telnet.ssh 等.成块数据的长度则通常为 TCP 报文段允许的最大数据长度.使用成块数据的应用程序(或协议)对传输效率要求高,比如 FTP. TCP 的交互数据流 交互数据流总是以小于最大报文段长度的分组发送,即进行小分组数据传输.主要应用在实时性要求比较高的场合.比如 Rlogin 远程登录中,需要回显客户端输入的字符,每发送一个

【网络协议】TCP的交互数据流和成块数据流

前言 建立在TCP协议上的应用层协议有很多,如FTP.HTTP.Telnet等,这些协议根据传输数据的多少可以分为两类:交互数据类型和成块数据类型. 交互数据类型,如:Telnet,这类协议一般只做小流量的数据交换,比如每按下一个键,要回显一些字符. 成块数据类型,如:FTP,这类协议需要传输的数据比较多,一般传输的数据量比较大. 针对这两种不同的情况,TCP采用不同的策略进行数据传输. 交互数据流 针对交互性要求比较高的应用,比如Rlogin远程登录中,需要回显客户端输入的字符,每发送一个字节

C# 移动端与PC端的数据交互

小记:针对目前功能越来越强大的智能手机来说,在PC端支持对手机中的用户数据作同步.备份以及恢复等保护措施的应用已经急需完善.不仅要对数据作保护,而且用户更希望自己的手机跟PC能够一体化,以及和远程服务器的一体化.用户希望在手机端的操作能够转移到PC端,对于PC端大屏幕的电脑来说,完成同样的操作可以大量的节省用户的时间.对于功能强大的手机来说,有近1/2的应用可以在PC端同步.所以对PC端应用的规划要以系统的角度来对待.同时要保证手机端和PC端的主流交互模式应保持一致.个人观点:数据的一体化和管理

分布式环境中,模块数据交互协议分析 (百度brpc)

1. 背景 之前听到同事说,要为自己的模块考虑写个数据协议.今天有空想了一下.写出来,方便后续使用. 开源代码brpc中可以支持多种协议,nshead.redis.mongo等20多种协议. 2. 什么是数据交互协议? 这里说的协议,不是tcp/ip这些网络协议. 在分布式环境中,我们需要将模块的数据通过网络bit流传给上.下游模块,就会涉及到数据完整性.正确性校验. 为了能够校验数据,就需要定义数据交换协议. 3. 代码brpc中的实现 每种协议类型,都需要实现自己的parser类,进行消息的

前后端数据交互,跳转

概述 作为一枚菜鸟,前后端交互可是大问题,经常数据交互失败,不知道怎么跳转.在这分享一下交互的小心得. 我们不妨先大概了解一下整个访问流程: 用户从输入网址按下回车,交互就已经开始了. 浏览器会将请求按照http协议(或者其他https,ftp等)将请求数据封装包从电脑的端口发出 -> 路由器 -> 运营商(域名解析之类的)-> 目标服务器(可能会有代理,负载均衡等等) 最终从服务器开放的端口,进入到服务器(TCP三次握手和四次挥手,Tomcat之类的,会根据协议的内容进行解析)->