一, 网络编程的目的
直接或间接地通过网络协议与其它计算机进行通讯,实现资源的共享
二,网络编程中面临的主要问题
1.
如何准确地定位网络上一台或多台主机
2.
找到主机后如何可靠高效地进行数据传输
三,网络通信要素
通讯要素
1
:
IP地址 和 端口号
端口号与
IP
地址的组合得出一个网络套接字
.
四,通信规则
计算机网络中实现通信必须有一些约定
,
即通信协议
.
对传输频率
,
数据格式
,
传输步骤
,
出错控制等设计的标准
.
协议模型差异化
数据封装和数据拆分
TCP/IP协议簇
TCP/IP
协议簇是
Internet
的基础
,
也是当今最流行的组网形式
.TCP/IP
是一组协议的代名词
,
包括许多别的协议
,
组成了
TCP/IP
协议簇
.
其中比较重要的有
PPP
协议、
IP
协议、
TCP
协议、
UDP
协议、
FTP
协议、
DNS
协议、
SMTP
协议等
五,TCP网络通信
1.
使用
TCP
协议前
,
须先建立
TCP
连接
,
形成传输数据通道
2.
传输前
,
采用
"
三次握手
"
方式
,
是可靠的
3. TCP
协议进行通信的两个应用进程
:
客户端、服务端
4.
在连接中可进行大数据量的传输
5.
传输完毕
,
需释放已建立的连接
,
效率低
(
释放连接需要四次挥手
)
六,Socket介绍
·Socket介绍
1.
利用套接字
(Socket)
开发网络应用程序早已被广泛的采用
,
以至于成为事实上的标准
2.
通信的两端都要有
Socket,
是两台机器间通信的端点
3.
网络通信其实就是
Socket
间的通信
4. Socket
允许程序把网络连接当成一个流
,
数据在两个
Socket
间通过
IO
传输
5.
一般主动发起通信的应用程序属客户端
,
等待通信请求的为服务端
·Socket类
·ServerSocket类
七,案例
//服务器端
public class Text {
public static void main(String[] args) throws IOException {
//创建服务器端套接字对象
ServerSocket serverSocket = new ServerSocket(5555);
System.out.println("服务器端已启动-等待客服端链接");
//等待客户端发送数据
Socket accept = serverSocket.accept();
System.out.println("客服端链接成功-等待接受数据");
//从管道中获取数据(管道)输入流
InputStream in = accept.getInputStream();
System.out.println("读取接受的数据");
//用数组保存数据
//设置缓冲区从输入流中读取数据
byte[] buff=new byte[1024];
//传过来的数据的字节码长度
int length=in.read(buff);
//从0-length长度字节码读取的内容
String string = new String(buff,0,length);
System.out.println("接受客户端发送的数据为:"+string);
//关闭通道
accept.close();
serverSocket.close();
}
}
//客户器端
public class Text1 {
public static void main(String[] args) throws UnknownHostException, IOException {
//创建客户端套接字
Socket socket = new Socket("127.0.0.1",5555);
//获取输出流,(通道)
OutputStream out = socket.getOutputStream();
//向通道中写入数据
String msg="Hello 屈小鸟";//要发送的信息
//写
out.write(msg.getBytes());//msg.getBytes()这是获取写入数据的字节码长度
//关流
out.close();
socket.close();
}
}