TCP/IP以及Socket对象基本
1 OSI七层模型概念介绍

应用层 | FTP Telnet HTTP | SNMP DNS | |
传输层 | TCP | UDP | |
网络互联层 | IP | ||
主机-网络层 | 以太网:IEEE802.3 | ||
令牌环网:IEEE802.4 |

客户端代码
- package com.asiaInfo.caozg.ch_01;
- import java.io.*;
- import java.net.Socket;
- /**
- * @Authgor: gosaint
- * @Description:
- * @Date Created in 21:31 2018/1/7
- * @Modified By:客户端代码
- */
- public class EchoClient {
- // 本机的IP地址
- private String host = "localhost";
- // 本机的端口号
- private int port = 8000;
- // socket 对象
- private Socket socket;
- // 构造器初始化Socket对象
- public EchoClient() throws IOException {
- socket = new Socket(host, port);
- }
- // 测试方法
- public static void main(String args[]) throws IOException {
- new EchoClient().talk();
- }
- private PrintWriter getWriter(Socket socket) throws IOException {
- OutputStream socketOut = socket.getOutputStream();
- return new PrintWriter(socketOut, true);
- }
- private BufferedReader getReader(Socket socket) throws IOException {
- InputStream socketIn = socket.getInputStream();
- return new BufferedReader(new InputStreamReader(socketIn));
- }
- public void talk() throws IOException {
- try {
- // 从socket读取数据
- BufferedReader br = getReader(socket);
- // 向socket写入数据
- PrintWriter pw = getWriter(socket);
- // 把控制台输入的数据转换为字符流,然后读取
- BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
- String msg = null;
- while ((msg = localReader.readLine()) != null) {
- // 将读取的数据写出的输出流(打印流)
- pw.println(msg);
- System.out.println(br.readLine());
- if (msg.equals("bye"))
- break;
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
服务端流程
- package com.asiaInfo.caozg.ch_01;
- import java.io.*;
- import java.net.*;
- public class EchoServer {
- private int port = 8000;
- private ServerSocket serverSocket;
- public EchoServer() throws IOException {
- serverSocket = new ServerSocket(port);
- System.out.println("服务器启动");
- }
- public String echo(String msg) {
- return "echo:" + msg;
- }
- private PrintWriter getWriter(Socket socket) throws IOException {
- OutputStream socketOut = socket.getOutputStream();
- return new PrintWriter(socketOut, true);
- }
- private BufferedReader getReader(Socket socket) throws IOException {
- InputStream socketIn = socket.getInputStream();
- return new BufferedReader(new InputStreamReader(socketIn));
- }
- public void service() {
- while (true) {
- Socket socket = null;
- try {
- socket = serverSocket.accept(); //等待客户连接
- System.out.println("New connection accepted "
- + socket.getInetAddress() + ":" + socket.getPort());
- // 从socket获取输入流字符,阅读消息
- BufferedReader br = getReader(socket);
- // 向socket写出数据
- PrintWriter pw = getWriter(socket);
- String msg = null;
- // 阅读消息
- while ((msg = br.readLine()) != null) {
- System.out.println(msg);
- // 写出消息
- pw.println(echo(msg));
- if (msg.equals("bye")) //如果客户发送的消息为“bye”,就结束通信
- break;
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (socket != null) socket.close(); //断开连接
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- public static void main(String args[]) throws IOException {
- new EchoServer().service();
- }
- }
- public class PortScanner{
- public static void main(String[] args){
- private String host="localhost";//本机的IP地址
- new PortScanner().scan(host);
- }
- public void scan(String host){
- Socket s=null;
- try{
- for(int port=1;port<1024;port++){
- // 创建socket对象
- s=new Socket(host,port);
- System.out.println("该端口没有被占用:"+port);
- }
- }catch(IOException e){
- Systrm.out.println("该端口被占用:"+port);
- }finally{
- try{
- if(s!=null)
- s.close;
- }catch(Exception e){
- e.printStackTrance();
- }
- }
- }
- }
TCP/IP以及Socket对象基本的更多相关文章
- TCP/IP、SOCKET、HTTP之间的联系与区别
主要内容: 1.网络的七层协议 2.TCP/IP.SOCKET.HTTP简介 3.TCP连接.HTTP连接.Socket连接的区别 一.网络的七层协议 网络七层由下往上分别为物理层.数据链路层.网络层 ...
- 网络协议HTTP、TCP/IP、Socket
网络协议HTTP.TCP/IP.Socket 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的 ...
- ios开发网络知识 TCP,IP,HTTP,SOCKET区别和联系
TCP,IP,HTTP,SOCKET区别和联系 网络由下往上分为: 对应 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- ...
- Linux内核 TCP/IP、Socket参数调优
Linux内核 TCP/IP.Socket参数调优 2014-06-06 Harrison.... 阅 9611 转 165 转藏到我的图书馆 微信分享: Doc1: /proc/sy ...
- TCP/IP以及Socket聊天室带类库源码分享
TCP/IP以及Socket聊天室带类库源码分享 最近遇到个设备,需要去和客户的软件做一个网络通信交互,一般的我们的上位机都是作为客户端来和设备通信的,这次要作为服务端来监听客户端,在这个背景下,我查 ...
- TCP/IP 和 Socket 的关系
要写网络程序就必须用Socket,这是程序员都知道的.而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,w ...
- TCP/IP,HTTP,Socket的区别与联系
一 忆往昔,尽是悔恨泪. 在学校的时候学过,网络七层,也知道tcp的三次握手.但因为根本没用在实际开发中,所以逐渐淡忘.现在就再次理解下三个的区别与联系. 二 正题 网络七层: ...
- 【转】TCP/IP和SOCKET的区别
要写网络程序就必须用Socket,这是程序员都知道的.而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,w ...
- 网络基础之HTTP、TCP/IP、Socket
一.HTTP相关 https://www.cnblogs.com/sunny-sl/p/6529830.html https://www.cnblogs.com/ranyonsue/p/5984001 ...
随机推荐
- mysql练习(待补充)
2.查询‘生物’课程比‘物理’课程成绩高的所有学生的学号 思路: 获取所有生物课程的人(学号,成绩)-临时表 获取所有物理课程的人(学号,成绩)-临时表 根据学号连接两个临时表: 学号 生物成绩 物理 ...
- 第五章 python中的异常处理
每种编程语言都会有自己的异常处理机制,虽然各有特色,但基本上都差不多,那么python中强大异常处理机制是什么样的呢? 一.异常: python用异常对象来表示异常情况,遇到错误后,会引发异常.如果异 ...
- Python 3 面向对象进阶
Python 3 面向对象进阶 一. isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的 ...
- mini2440移植uboot 2014.04(一)
最新版的uboot添加了很多新功能,我决定在最新版代码基础上重新移植一遍加深理解. 我修改的代码已经上传到github上,地址:https://github.com/qiaoyuguo/u-boot- ...
- 剑指offer——圆圈中最后剩下的数字
1.如果通过环形列表去模拟圆圈的话,最后时间复杂度为O(mn),而且还需要一个辅助链表来模拟圆圈,空间复杂度为O(n). 2.通过找出递推公式的方法,求得递推公式为 时间复杂度为O(n),空间复杂度为 ...
- Python 案例一(计算人体体脂率)
#计算人体体脂率 #输入部分 #身高 personHeight = input("请输入你的身高(m):") personHeight = float(personHeight) ...
- poj 1419Graph Coloring 【dfs+补图+计算最大团+计算最大独立集 【模板】】
题目地址:http://poj.org/problem?id=1419 Graph Coloring Time Limit: 1000MS Memory Limit: 10000K Total S ...
- DL二(稀疏自编码器 Sparse Autoencoder)
稀疏自编码器 Sparse Autoencoder 一神经网络(Neural Networks) 1.1 基本术语 神经网络(neural networks) 激活函数(activation func ...
- Struts调用DMI
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
- kylin_学习_01_kylin安装部署
一.环境准备 根据官方文档,kylin是需要运行在hadoop环境下的,如下图: 1.hadoop环境搭建 参考:hadoop_学习_02_Hadoop环境搭建(单机) 2.hbase环境搭建 参考: ...