socket編程

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作为数据传输的载体储存在数据报中


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值