tcp和ip协议位于传输层
端口号用于区分不同应用程序
端口号范围0-65535 0-1023被系统保留
ip地址加上端口号就称为socket,socket是网络上通信的传输链的终口
http端口号为80 ftp端口号为21 telent端口号是23
inetAdress:用于标示网络上的硬件资源//标示ip信息
datagram使用utp协议,将数据储存在数据报中,通过网络进行通信
inetadress类提供了查询ip地址和主机名的方法(gethostadress and gethostname)
inetaddress address=inetaddress.getlocalhost()可以直接获得本机的ip地址和名字。
可以通过getbyname(计算机名字)或者getbyaddress(计算机地址)来获得计算机的实例。
url imooc=new url("http//www.imooc.com");
url url=new url(imooc,"/index.html?username=tom#test");//创建一个url实例然后调用方法如(查询协议,url.gerprotocol());
查询文件名getfile()查询的是引号后面的参数,#号后面是相对路径,查询字符串为username=tom;
通过url对象的openstream()方法可以得到指定资源的输入流.
可以通过url的openstream方法获取url对象所表示的资源的字节输入流。
将字节输入流转换为字符输入流(此处可以指定转换编码(gbk,utf-8等))再添加缓冲可以提高传输效率。
server 建立服务端倾听socket 等待并接收连接请求 接收请求后创建连接socket(建立连接) client创建连接socket向服务端发送请求。
inputstream-outputstream(开始通信) outputstream-inputstream
关闭socket及相关资源 (结束通信) 关闭socket及相关资源
1服务器端创建serversocket对象,绑定监听端口
2通过accept()方法监听客户端请求
3连接建立后,通过输入流读取用户发送的信息
4服务器端通过输出流向客户发送响应信息
5关闭相关资源
客户端和服务端之间的通信
1先创建serversocket serversocket=new serversocket(8888);绑定指定端口,端口最好在1023后
2接收客户端的信息 socket socket=serversocket.accept();
3建立输入流//读取客户端信息
inputstream is=new inputstream()
inputstreamreader isr=new inputstreamreader(is)
bufferedreader br=new bufferedreader(isr)
读取客户端客户端信息
string info=null;
while((info=br.readline())!=null){
system.out.println("我是服务器,客户端说:“+info);
}
利用socket.shutdowminput()关闭输入流
获取输出流,响应客户端的请求
outputstream os=socket.getoutputstream();
printwriter pw=new printwriter(os);
pw.writer("欢迎您")
pw.flush();
服务器多线程实现多客户端的通信
public class serverthread extends thread{
socket socket=null;
public serverthread (socket socket){
this.socket=socket;
}
}
通信是这样炼成的
udp作为数据传输的载体储存在数据报中