Java网络编程——Socket与ServerSocket
来源:互联网 发布:淘宝钱夫人是谁 编辑:程序博客网 时间:2024/04/30 00:28
我们知道,程序可以通过ServerSocket和Socket两个类来实现TCP服务器、TCP客户端。下面我们通过一个简单的demo看一下代码中具体是怎么实现的。
Client.java
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;public class Client {public static void main(String[]args) throws IOException{Socket socket=new Socket("127.0.0.1",30000);//将Socket对应的输出流包装成BufferedReaderBufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));String line=br.readLine();System.out.println("来自服务器的数据:"+line);//关闭输入流、socketbr.close();socket.close();}}
Server.java
import java.io.IOException;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[]args) throws IOException{//创建一个ServerSocket,用于监听客户端Socket的连接请求ServerSocket ss=new ServerSocket(30000);//采用循环不断接受来自客户端的请求while(true){//每当接受到客户端Socket的请求,服务器端也对应产生一个SocketSocket s=ss.accept();//将Socket对应的输出流包装成PrintStreamPrintStream ps=new PrintStream(s.getOutputStream());ps.println("您好,您收到了服务器的新年祝福");//关闭输出流,关闭Socketps.close();s.close();}}}
这个简单的小demo就实现了客户端与服务端的通信。但是由于此种方式是基于阻塞式API的,即当程序执行输入、输出操作后,在这些操作返回之前会一直阻塞该线程,所以服务器必须为每个客户端都提供一条独立线程进行处理,当服务器需要同时处理大量客户端时,这种做法会导致性能的下降。java提供的NIO API能够有效的解决这个问题,可以让服务器使用一个或者有限几个线程来同时处理连接到服务器上的所有客户端,以开发高性能的网络服务器。也就是Selector的应用。下篇博客我们将介绍Selector的代码实现。
- Java网络编程——Socket与ServerSocket
- Java网络编程——Socket与ServerSocket阻塞通信
- Java Socket 编程 Socket与ServerSocket
- java 网络编程类 DatagramSocket,ServerSocket,Socket
- Java网络编程(ServerSocket和Socket)
- JAVA: Socket和ServerSocket网络编程
- java网络编程:Socket和ServerSocket类
- java网络编程——Socket和ServerSocket,套接字编程——简单聊天室
- java网络编程——Socket和ServerSocket,套接字编程——简单聊天室改进
- java BIO实例——ServerSocket、Socket编程
- Java Socket 编程之Socket与ServerSocket的区别
- Java Socket 编程之Socket与ServerSocket的区别
- Java Socket 编程之Socket与ServerSocket的区别
- java网络socket编程(三)之ServerSocket服务器端
- Java网络编程,Socket,ServerSocket使用,TCP,UDP的异同
- java-------TCP------Socket与ServerSocket
- 网络编程 socket serversocket连接问题
- java socket/Serversocket编程详解(中/英文)
- DB2LOOK 的新用法
- 武汉,今夜请将我遗忘
- mac下查看系统位64位还是32位
- 编一个ffmpeg玩玩,目前支持xcode4.5和sdk6.0
- 区间内出现某个数k次的数目问题
- Java网络编程——Socket与ServerSocket
- 除法中的向上取整
- 两个大数相乘JAVA版
- hdu 1316 poj 2413 how many Fibs
- ZOJ 1949 Error Correction
- 一天正常的作息时间表
- windows_常用命令
- 在各文件中统一形式的#include
- 《影响力》读书随笔