5.12网络编程——scoket编程

一、网络概述

    网络:相互连接的计算机,用来交换数据和共享资源。

              计算机网络旨在实现数据通信;数据形式:文本 、图片、声音和音频。

              按照地理覆盖范围,计算机网络分为局域网、城域网和广域网。

            (1)局域网:局限在小的地理区域内或单独的建筑物内,被用于连接办公室、实验室或工厂里的个人计算机和工作站。

            (2)城域网:覆盖城市或城镇内的广大地理区域,是在一个区域内建立的计算机通讯网。

            (3)广域网:是在一个更广泛的地理范围内所建立的计算机通讯网,范围超过一个城市或国家以至全球,因而对通信的要求及复杂性都比较高;

                                                                                        ois参考模型

应用层网络服务和最终用户的借口
表示层数据的表示、安全、和压缩
会话层建立、管理和终止会话
传输层定义传输数据的协议端口号,流量控制和差错恢复
网络层进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层建立逻辑连接,进行硬件地址寻址,差错校验等
物理层建立、维护、断开物理连接

    1、ip地址

          IP地址:用户来唯一标识网络中的每一台计算机,分为网络地址和主机地址;

IPv4组成:4个8位的二进制组成,每8为之间用“.”隔开例如:11000000.10101000.00000010.00010100。由于二进制不好记所且可读性差,通常把二进制转换成十进制。例如:196.168.2.20  。又称为点分十进制。

IPv6组成:8个16位的无符号整数组成,每个整数用4个十六进制数表示。

        IP地址分类:

A类1~126第一组数表示网络地址,其余三位表示主机地址
B类128~191前二组数表示网络地址,其余两位表示主机地址
C类192~223前三组数表示网络地址,最后一位表示主机地址
D类224~239不分主机地址和网络地址,用于组播通信
E类240~254不分主机地址和网络地址,用于科学研究

   2、端口

定义:每台主机都有若干个端口,用于收发数据时区分该数据发给哪个进程或者从哪个进程发出的。

范围:0~65535;

在一台计算机内两个进程不能同时使用一个端口。

   3、服务器

        邮件服务器

        web服务器:

                            (1)microsoft IIS

                            (2)Apache服务器

                            (3)Tomcat服务器

    4、网络协议

TCP/IP协议族:互联网最基本的协议,他不依赖于任何计算机硬件和操作系统,提供开放的协议标准。目前绝大多数网络操作系统都提供对TCP/IP协议族的支持。TCP/IP协议族包括:IP协议、TCP协议、udp协议和ARC协议等;

TCP协议:传输控制协议,TCP是一种面向连接的、可靠地、基于字节流的传输层通信协议:TCP要求通信双方必须在建立连接之后才开始通信,通信双方可以同时进行数据传输,他是全双工的,从而保证了数据的正确传输;

UDP协议:用户数据报协议,无连接协议,在传输数据之前,客户端和服务器不建立和维护连接。主要作用是把网络通信的数据压缩为数据报的形式。

二、scoket编程

public class SocketO {
//客户端
public static void main(String[] args) {

Socket socket =null;
InputStream is=null;
OutputStream os=null;
BufferedReader br =null;

try {
socket = new Socket("localhost", 8800);
is =socket.getInputStream();//客户端输入,
os=socket.getOutputStream();//客户端输出,服务器接收;
//想输出流写入信息,发送客户端登录信息;
String info ="用户名:tom;密码:123456;";

os.write(info.getBytes());

socket.shutdownOutput();
br =new BufferedReader(new InputStreamReader(is));
String temp=null;
while ((temp=br.readLine())!=null) {
System.out.println("我是客户端:服务器的响应为"+temp);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if (br!=null) {
br.close();
}
if (is!=null) {
is.close();
}
if (os!=null) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}


}



public class ServerScoketO {
//服务器
public static void main(String[] args) {

ServerSocket serverSocket=null;
Socket socket=null;
InputStream is=null;
OutputStream os =null;
BufferedReader br=null;

try {
serverSocket= new ServerSocket(8800);
socket= serverSocket.accept();
is= socket.getInputStream();
os = socket.getOutputStream();
br=new BufferedReader(new InputStreamReader(is));
String info =null;

while ((info=br.readLine())!=null) {
System.out.println("我是服务器,客户的登录信息为:"+info);

}
String temp="欢迎您,登录成功!";

os.write(temp.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if (os!=null) {
os.close();
}
if (br!=null) {
br.close();
}
if (is!=null) {
is.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}






}
}












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值