java中TCP总结
先看一张图,画的很挫,将就看。
TCP 客户端与服务端通信时,是服务端会拿到客户端的socket进行通信。
TCP就相当于以前的座机,有一个听筒和一个话筒,A用话筒说话,B用听筒听。
下面讲讲java中TCP的使用以及步骤。
TCP客户端步骤:
1.建立Socket服务,并确定IP和Port
2.通过socket服务获取输入流或输出流。
3.通输入或输出流操作数据。
TCP服务端的步骤:
1.用ServerSocket来监听Port
2.用accept获取客户端的Socket
3.通客户端的Socket来获取输入和输出流。
4.通过数据流传输。
用一个简单实例演示:
package com.core.net; import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; class TcpClient{ public static void main(String[] args) throws Exception { Socket s = new Socket("localhost", 10004); OutputStream out = s.getOutputStream(); out.write("tcp come ...".getBytes()); s.close();
}
}
class TcpServer{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(10004); Socket s = ss.accept(); String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".....connect"); InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); System.out.println(new String(buf,0,len)); s.close();
ss.close(); }
}
public class TcpDemo { public static void main(String[] args) { }
}
这个实例只是客服端发送数据,服务器接收数据。
下面是一个例子是客服端发送数据,服务器发送数据。
package com.core.net; import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; class Client2{ public static void main(String[] args) throws Exception { Socket socket = new Socket("localhost", 10004); OutputStream out = socket.getOutputStream(); out.write("服务端,你好".getBytes()); InputStream in = socket.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); System.out.println(new String(buf,0,len)); socket.close();
}
}
class Server2{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(10004); Socket s = ss.accept(); InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); System.out.println(new String(buf,0,len)); OutputStream out = s.getOutputStream(); Thread.sleep(10000); out.write("客服端,你好".getBytes()); s.close(); ss.close();
}
}
public class TcpDemo2 { public static void main(String[] args) { }
}
最后一个例子是服务端为大写转换器,客服端输入数据,服务端将输入的数据转换大写。
package com.core.net; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket; class TransClient{ public static void main(String[] args) throws Exception { Socket socket = new Socket("localhost", 10005); //键盘输入
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//socket输入流
BufferedReader bufin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//socket输出流
BufferedWriter bufout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String line = null;
while((line = reader.readLine())!=null){ if("over".equals(line))
break;
bufout.write(line);
bufout.newLine();//要注意 "\r\n"
bufout.flush(); String str = bufin.readLine();
System.out.println("server:"+str); }
reader.close();
socket.close(); }
} class TransServer{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(10005); Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"......connection");
BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line = null;
while((line = reader.readLine())!=null){ System.out.println(line);
out.write(line.toUpperCase());
out.newLine();
out.flush();
}
s.close();
ss.close();
}
}
public class TransDemo { public static void main(String[] args) { }
}
java中TCP总结的更多相关文章
- java中TCP传输协议
class TcpClient { public static void main(String[] args) throws Exception { //创建client的socket服务,指定目的 ...
- java中TCP两个例子大写服务器和文件上传
大写服务器的实例: package com.core.net; import java.io.BufferedReader; import java.io.BufferedWriter; import ...
- java中tcp小样例
服务端: ServerSocket service = new ServerSocket(7777); Socket socket = service.accept(); InputStream in ...
- TCP协议的基本规则和在Java中的使用
TCP协议是面向连接的,相对于UDP协议来说效率较低,但是比较安全,数据不容易丢失.TCP协议类似打电话的过程,在一端拨号时必须等待对方回应,确定两端建立了连接通道才能传送信息. 在Java中TCP被 ...
- Java中的TCP/UDP网络通信编程
127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...
- 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为
初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...
- 第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON
第88节:Java中的Ajax和Jquery ajax是什么?有什么用?原理,怎么用? ajax是asynchronous javascript and xml(异步javascript和xml),是 ...
- TCP通信实现对接硬件发送与接收十六进制数据 & int与byte的转换原理 & java中正负数的表示
今天收到的一份需求任务是对接硬件,TCP通信,并给出通信端口与数据包格式,如下: 1.首先编写了一个简单的十六进制转byte[]数组与byte[]转换16进制字符串的两个方法,如下: /** * 将十 ...
- Java中的网络编程
Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的 C/S程序应用:客户/服务器模式,如QQ客户端 ...
随机推荐
- 交换机基础配置之stp生成树实验
实验的要求是以上面的拓扑图为例,查看当前根桥的所在并把三成交换机switch1指定为根桥 我们可以用show spanning-tree来查看stp的信息 输入后会显示两部分 上面一部分为当前交换机自 ...
- Salt-ssh 自动安装salt-minion
作用:为了不手动去安装一台一台去salt-minion,并进重复的配置 一.环境 系统环境: #cat /etc/redhat-release CentOS Linux release 7.4.170 ...
- Centos7上docker的安装和基本使用
Centos7上Docker的相关操作 Docker的安装 1.检查内核版本 docker使用linux的内核必须是3.10以上,首先需要 # uname -r 2.使用yum安装docker # y ...
- windows和linux上mysql的安装
mysql基于多平台,多版本的安装 mysql.tar.gz 链接:https://pan.baidu.com/s/1lG9BNL1mG4qbjM8xLHtrjQ 密码:s4tk MySQL 是一个 ...
- php-5.6.26源代码 - 如何用C语言支持“类似异常”机制
代码编写在文件php-\Zend\zend.h #define zend_bailout() _zend_bailout(__FILE__, __LINE__) #ifdef HAVE_SIGSETJ ...
- 控制器方法重复命名导致nginx 504的问题
由于控制器方法重复命名重启swoole后运行代码导致 504 Gateway Time-out ,查看laravel日志和nginx日志才找原因所在,以后还是要多看错误日志.
- 学习python第十三天,函数5 装饰器decorator
定义:装饰器本质是函数,(装饰其他函数)就是为其他函数添加附加功能原则:1.不能修改被装饰的函数的源代码 2.不能修改装饰的函数的调用方式 实现装饰器知识储备1函数即变量2.高阶函数,满足2个条件之一 ...
- 笔记-python-standard library-11.2 os.path
笔记-python-standard library-11.2 os.path 1. os.path Source code: Lib/posixpath.py (for POSIX), L ...
- kettle入门(三) 之kettle连接hadoop&hdfs图文详解(转)
1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情 ...
- struts2官方 中文教程 系列五:处理表单
先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单 即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...