Socket编程
来源:互联网 发布:数据库物理设计图visio 编辑:程序博客网 时间:2024/05/29 13:38
Socket编程
1.服务端
/** * 基于TCP协议的Socket通信*//** * 服务端 * 1.创建ServerSocket对象,绑定监听端口 2.通过accept()方法监听客户端请求 3.连接建立后,通过输入流读取客户端发送的请求信息 4.通过输出流向客户端发送响应信息 5.关闭相关资源 */public class Server { public static void main(String[] args) throws IOException { //1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket = new ServerSocket(5678); //1024-65535的某个端口 //2、调用accept()方法开始监听,等待客户端的连接 Socket socket = serverSocket.accept(); //3、获取输入流,并读取客户端信息 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String info =null; while((info = br.readLine()) != null){ System.out.println("我是服务器,客户端说:" + info); } socket.shutdownInput();//关闭输入流 //4、获取输出流,响应客户端的请求 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("欢迎您!"); pw.flush(); //5、关闭资源 pw.close(); os.close(); br.close(); socket.close(); serverSocket.close(); } }2.客户端
/** * 客户端 * 1.创建Socket对象,指明需要连接的服务器的地址和端口号 * 2.连接建立后,通过输出流向服务器端发送请求信息 * 3.通过输入流获取服务器响应的信息 * 4.关闭响应资源 */public class Client { public static void main(String[] args) throws Exception { //1、创建客户端Socket,指定服务器地址和端口 Socket socket = new Socket(InetAddress.getLocalHost(), 5678); //2、获取输出流,向服务器端发送信息 PrintWriter pw = new PrintWriter(socket.getOutputStream());//将字节输出流包装成打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput();//关闭输出流 //3、获取输入流,并读取服务器端的响应信息 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String info = null; while((info=br.readLine()) != null){ System.out.println("我是客户端,服务器说:" + info); } //4、关闭资源 br.close(); pw.close(); socket.close(); } }3.应用多线程实现服务器与多客户端之间的通信
/** * 1.服务器端创建ServerSocket,循环调用accept()等待客户端连接 2.客户端创建一个socket并请求和服务器端连接 3.服务器端接受苦读段请求,创建socket与该客户建立专线连接 4.建立连接的两个socket在一个单独的线程上对话 5.服务器端继续等待新的连接 */public class Server2 { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(5678); Socket socket = null; int count = 0;//记录客户端的数量 while(true){ socket = serverSocket.accept(); ServerThread serverThread = new ServerThread(socket); serverThread.start(); count++; System.out.println("客户端连接的数量:" + count); } } }
//服务器线程处理public class ServerThread extends Thread{ //和本线程相关的socket Socket socket = null; public ServerThread(Socket socket){ this.socket = socket; } public void run(){ //服务器处理代码 } }
http://www.cnblogs.com/rocomp/p/4790340.html
==============================================================================
Java Socket重要参数讲解
0 0
- socket编程--socket基本概念
- socket编程--socket基本概念
- socket编程
- socket编程
- Socket 编程
- socket编程
- Socket编程
- Socket编程
- Socket编程
- Socket编程
- SOCKET编程
- socket编程
- Socket编程
- socket编程
- Socket 编程
- Socket 编程
- socket 编程
- socket编程
- 在学习安装nagios中所遇到的问题
- 前端的开始
- CCF之最大的矩阵(java)
- 反向投影
- 14(高级)CSS动画之:旋转星球
- Socket编程
- 使用common-fileUpload制作文件上传(DiskFileItemFactory方式)
- hadoop下linux集群间设置ssh免密登录
- 【LeetCode题解】链表Linked Lis
- [gridview] -- Column源码
- C++ primer学习之类型转换(1) 隐式转换
- pdf阅读器与迅捷pdf编辑器的使用方法
- 浅析软件产品生命周期的重要角色
- 算法训练 摆动序列