博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16、sockect
阅读量:5012 次
发布时间:2019-06-12

本文共 5128 字,大约阅读时间需要 17 分钟。

一、局域网因特网

  服务器是指提供信息的计算机或程序,客户机是指请求信息的计算机或程序,而网络用于连接服务器与客户机,实现两者之间的通信。但有时在某个网络中很难将服务器和客户机区分开。我们通常说的“局域网(Local Area Network  LAN)”就是一群通过一定形式连接起来的计算机。它可以由两台计算机组成,也可以由同一个区域内的上千台计算机组成。由LAN延伸到更大的范围,这样的网络称为“广域网”(Wide Area Network WAN)。我们熟悉的因特网这是由无数的LAN和WAN组成。

 

二、网络协议

  网络协议规定了计算机之间连接的物理、机械、电器等特征以及计算机之间的相互荀子规则、数据发送冲突的解决、长的数据如何分段传送与接收等。就像不同国家有不同的法律一样,目前网络协议也有多种。

  

三、端口与套接字

  端口:

  一般而言,一台计算机只有单一的连到网络的“物理连接”,所有的数据都通过此连接对内、对外送达特定的计算机。这就是端口。网络程序设计中的端口(port)并非真实的物理存在,而是一个假想的链接装置。端口被规定为一个在0~65535之间的整数。HTTP服务一般使用80端口,FTP使用21端口。加入一台计算机提供了HTTP、FTP等多种服务,那么客户机通过不同的端口来确定链接到服务器的哪项服务上。前1000个是系统的端口,其他的占其他的。

  套接字:

  网络程序中套接字(Socket)用于将应用程序与端口链接起来。套接字是一个假想的链接装置,就像插插头的设备“插座”,用于链接电器与电线。

过程:

1、建立套接字对象其中包含端口,客户端要加上要连接的服务器的IP地址;建立客户端对象,使用serversocket.accept()等待客户端连接。

2、建立文件对象(建立)

3、发送方:使用输入流,将文件或文字从硬盘读到内存中

4、发送方:使用输出流,将内存中的东西发送到了接收方

5、接收方建立套接字对象包含端口

6、接收方:使用输入流,将接收到的名字或文件或信息读取到内存中

7、接收方:使用输出流,将内存中缓存的名字,信息写到硬盘中。

8、先打开的后关闭,后打开的先关闭。

聊天器代码:

客户端代码:

PrintWriter()的作用是设置输出流和是否自动刷新输出

package com.zxc.O;import java.io.IOException;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;/** * Created by Administrator on 2018/2/8 0008. */public class MyClient {    public static void main(String[] args) {        Socket client=null;        try {            client=new Socket("127.0.0.1",9081);            PrintWriter pw=new PrintWriter(client.getOutputStream(),true);            Scanner sc=new Scanner(System.in);            while(sc.hasNext()){                String line=sc.nextLine();                pw.println(line);            }            sc.close();        } catch (IOException e) {            e.printStackTrace();        }finally {            try {                client.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

服务器代码:

package com.zxc.O;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;/** * Created by Administrator on 2018/2/8 0008. */public class MyServer {    public static void main(String[] args) {        ServerSocket ss=null;        Socket client=null;        BufferedReader br=null;        try {            ss=new ServerSocket(9081);            client=ss.accept();            br=new BufferedReader(new InputStreamReader(client.getInputStream()));            boolean flag=true;            while(flag){                String line=br.readLine();                if(line.trim().equals("exit")) {                    flag = false;                    System.out.println("结束");                }else{                    System.out.println("女孩:"+line);                }            }        }        catch (IOException e) {            e.printStackTrace();        }finally {            try {                client.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 

飞鸽下载文件

服务器代码:

package com.zxc.O;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/** * Created by Administrator on 2018/2/8 0008. */public class MyfileServer {    public static void main(String[] args) {        ServerSocket ss=null;        Socket client=null;        DataInputStream dis=null;        DataOutputStream dos=null;        try{            ss=new ServerSocket(8213);            File file=new File("d://456.txt");            dis=new DataInputStream(new BufferedInputStream(new FileInputStream(file)));            client=ss.accept();            dos=new DataOutputStream(client.getOutputStream());            dos.writeUTF(file.getName());            dos.flush();            int n;            byte[] buffer=new byte[1024];            while((n=dis.read(buffer))!=-1){                dos.write(buffer,0,n);                dos.flush();            }        }catch(Exception e){            e.printStackTrace();        }        finally {            try {                dos.close();                dis.close();                client.close();                ss.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

客户端代码:

package com.zxc.O;import java.io.*;import java.net.Socket;/** * Created by Administrator on 2018/2/8 0008. */public class MyfileClient {    public static void main(String[] args) {        Socket client=null;        DataInputStream dis=null;        DataOutputStream dos=null;        try{            client=new Socket("127.0.0.1",8213);            dis=new DataInputStream(client.getInputStream());            String filename=dis.readUTF();            File file=new File("e://"+filename);            dos=new DataOutputStream(new FileOutputStream(file));            int n=-1;            byte []buffer=new byte[1024];            while((n=dis.read(buffer))!=-1){                dos.write(buffer,0,n);            }        }catch(Exception e){            e.printStackTrace();        }finally {            try {                client.close();                dos.close();                dis.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 

  

转载于:https://www.cnblogs.com/television/p/8432978.html

你可能感兴趣的文章
delphi DCC32命令行方式编译delphi工程源码
查看>>
paip.输入法编程----删除双字词简拼
查看>>
or1200下raw-os学习(任务篇)
查看>>
ZOJ - 3939 The Lucky Week(日期循环节+思维)
查看>>
小花梨的取石子游戏(思维)
查看>>
Ubuntu 18.04安装arm-linux-gcc交叉编译器
查看>>
.net core i上 K8S(一)集群搭建
查看>>
django drf 深入ModelSerializer
查看>>
Android---Menu菜单
查看>>
【资源导航】我所用到过的工具及下载地址
查看>>
监控Tomcat
查看>>
剑指offer编程题Java实现——面试题4后的相关题目
查看>>
简单的社交网络分析(基于R)
查看>>
Http请求工具类 httputil
查看>>
html幻灯效果页面
查看>>
太可怕了!黑客是如何攻击劫持安卓用户的DNS?
查看>>
nginx在Windows环境安装
查看>>
MVC案例——删除操作
查看>>
Timer和TimerTask的使用--2
查看>>
UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等)
查看>>