Java TCP 程序
2015-07-25 20:02
477 查看
服务器采用BIO模式,每一个线程处理一个连接。问题出现在,如果使用BufferedReader去读取字符流,如果没有换行符的话,那么就会导致线程阻塞。因为调用了readLine()方法。
客户端程序。同样会阻塞,因为调用了readLine()方法。
import java.io.*; import java.net.Socket; import java.net.InetAddress; import java.net.ServerSocket; import java.util.Scanner; class ServerSocketTest { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(6000); System.out.println("Server running, waitting for client to login ..."); Socket s = ss.accept(); OutputStream os = s.getOutputStream(); InputStream is = s.getInputStream(); os.write("Hello Wellcome\n".getBytes()); os.flush(); /* byte[] buf = new byte[1024]; int len = is.read(buf); System.out.println(new String(buf,0,len));*/ BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null; while((line = br.readLine()) != null){ System.out.println(line); } os.close(); is.close(); s.close(); ss.close(); } catch (Exception e) { e.printStackTrace(); } } }
客户端程序。同样会阻塞,因为调用了readLine()方法。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; public class SocketTest { public static void main(String[] args){ try { System.out.println(InetAddress.getLocalHost()); Socket s = new Socket(InetAddress.getLocalHost(), 6000); OutputStream os = s.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("username:fangying;password:123\n"); pw.flush(); InputStream is = s.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null; while ((line = br.readLine()) != null) { System.out.println("client get :" + line); } br.close(); is.close(); pw.close(); os.close(); s.close(); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 聊聊HTTPS和SSL/TLS协议
- 聊聊HTTPS和SSL/TLS协议
- Androids含文档erver结束(工具包 Httputils)两
- 网络访问之图片显示
- nfs基本应用之httpd+nfs负载均衡实验
- HTTP Web服务器研究之二 HTTP协议
- WARN [http-8080-1] - No mapping found for HTTP request with URI [/MyLibrary/books/listBooks.action]
- 黑马程序员——Java网络编程
- 径向基神经网络(实例故障分类)
- [知识点]网络流之Dinic算法
- Windows网络编程:阻塞模式下的Socket编程
- TCP数据段格式+UDP数据段格式详解
- Android的http两种请求方式
- 黑马程序员--网络编程
- [知识点]网络流之Edmond-Karp算法
- HttpUrlConnection上传图片代码实现
- tcpdump丢包问题解决方法
- http form get post本质区别
- 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
- poj 1679 http://poj.org/problem?id=1679