网络编程

来源:互联网 发布:如何用winhex数据恢复 编辑:程序博客网 时间:2024/05/16 05:16
1. 什么是网络通信协议:

计算机网络中实现通信,必须有一定的约定,即通信协议。对速率,传输代码,代码结构,传输控制
步骤,出错控制等 制定标准。

2. 网络通信接口:

 为了使两个点之间能进行对话,必须在他们之间建立通信工具  (即接口),使彼此之间能够进行
信息交换。接口包括两部分。
硬件装置:实现节点之间的信息传送。
软件装置:规定双方进行通信的约定协议。
IP :提供独一无二的 IP 地址。
TCP/UDP


TCP:是专门设计用于在不可靠的因特网上,提供可靠的端到端的字节流通讯协议.它是一种面向连接的
协议,TCP连接是字节流而非报文流。可靠/慢

UDP:(USER data protocol)
UDP :向应用 程序提供了一种发送封装原始IP 数据报的方法,并且发送时,无需建立连接,是一种
 不可靠的连接。不可靠/慢
 
三个点,支撑自己的发展。1.技术 2. 管理 3.沟通




Socket 编程:


一般的网络编程,叫socket 编程。

两个java 应用程序员 可以通过一个双向的网络通讯连接实现数据交换,这个双向链路的端被称为
Socket.

socket 通常用来实现 client-server 连接。

java.net 包中定义两个类Socket 和ServerSocket 分别用来实现双向连接的client 端和server 端。

建立连接时,所需要的寻址信息是原程计算机的IP地址和端口号(Port number)。端口号用来,区分不同的网
不同的网路应用程序。端口一旦一个应用程序使用了,其它就无法使用了。我们使用端口号时,要使用1024 一下
的。1024 一下的操作系统可能随时征用。TCP端口和UDP端口是分开的。都是65536个。

从技术讲,只有TCP才有server 和client。

    网路编程:的包都位于 java.net 包中。


写程序的时候,应该client 和server 同时写,启动的时候,应该先启server 后启动server


serverSocket 


serverSocket 一旦启动,就需要不停的接收客户端的请求。需要制定端口。

socket client 端的socket 的端口 系统随机选择。

TCP 通讯模型:


1 ,服务器端。新建一个serverSocket(端口号),serverSocket accept 方法,得到一个
接到对方的一个通信,  包装程一个socket。Socket 可以取得InputStream ,OutputStream
通过inputStream ,outputStream 就可以跟客户端发送数据了。


package com.bjsxt.socket;


import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TestServerSocket {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket ss=new ServerSocket(6666);
while(true){
Socket s =ss.accept();
InputStream ins=s.getInputStream();
DataInputStream dis=new DataInputStream(ins);
System.out.println(dis.readUTF());// 阻塞式
dis.close();
ins.close();
s.close();
System.out.println("a client connected");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


2.客户端:

public class TestSocket {


public static void main(String[] args){

try {
Socket s= new Socket("127.0.0.1",6666);
OutputStream output=s.getOutputStream();
DataOutputStream dos=new DataOutputStream(output);
dos.writeUTF("hello server");// 阻塞式
dos.flush();
dos.close();
output.close();
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}




原创粉丝点击