Java-Socket
来源:互联网 发布:淘宝网衬衫连衣裙女 编辑:程序博客网 时间:2024/05/19 16:51
Socket
Socket介绍及其通信模型
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。
socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
Socket的英文原义是“孔”或“插座”。在计算机网络通信中,取后一种意思。通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
Socket通信实现(单线程下)
- 服务器端 Server
1.指定一个端口,实例化一个ServerSocket对象。
服务器就可以用这个端口监听从客户端发来的连接请求。
2.使用ServerSocket的accept()方法,等待端口发来的请求。
3.利用accept方法返回的客户端的Socket对象,进行读写IO的操作
4.关闭流,socket对象
package tcp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args) throws IOException { //创建一个服务器端的ServerSocket对象ss,指定端口,并监听此端口 ServerSocket ss = new ServerSocket(8001); //使用accept()监听,等待客户端链接 Socket s = ss.accept(); //获取输入流,获取客户端发送的信息 InputStream is = s.getInputStream(); InputStreamReader isr = new InputStreamReader(is,"UTF-8"); BufferedReader br = new BufferedReader(isr); String str =null; while((str = br.readLine())!=null){ System.out.println(str); } //关闭资源 br.close(); isr.close(); is.close(); s.close(); ss.close(); }}
- 客户端 Client
1.使用服务器端IP地址和端口,创建客户端的Socket对象。
2.使用Socket对象获取消息内容,对其进行操作
3.关闭资源
package tcp;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;public class Client{ public static void main(String[] args) { try { //这里做测试用,目的地址是自己的IP地址 Socket s = new Socket("localhost", 8001); //使用Socket对象 OutputStream os = s.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8"); PrintWriter pw = new PrintWriter(osw); pw.write("你好呀\n"); pw.write("123\n"); pw.write("Hello\n"); pw.close(); osw.close(); os.close(); s.close(); } catch (Exception e) { e.printStackTrace(); } }}
阅读全文
0 0
- java socket (-) 简单socket
- Java Socket
- java-socket
- java socket
- Java Socket
- JAVA Socket
- Java Socket
- socket(java)
- Java Socket
- Java socket
- java socket
- java socket
- Socket(java)
- Java socket
- Java Socket
- java socket
- Java Socket
- java socket
- OSI七层与TCP/IP五层网络架构详解
- 【收藏】全球100款大数据工具汇总
- 斐波那契数列
- 图论
- 敌兵布阵,线段树入门。
- Java-Socket
- 卖火柴的小女孩
- 骑士精神
- 官方推荐的Dialog——DialogFragment
- GreenDao使用说明(一)
- Android Dialog 源码研究
- HTML5学习04-HTML5列表、快和布局
- FTP 编写 3:同时为多个客户端服务(多线程)
- linux环境变量