1. [代码]读操作Runable

 1 package com.hrd.test.socket;

 import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter; /**
* 作者: ehomeud 创建于: 2015/4/15 13:15
*/
public class ReadThread implements Runnable { private BufferedReader br;
private String sc; public ReadThread(BufferedReader br,String sc){
this.br=br;
this.sc =sc;
}
@Override
public void run() {
while (true){
try {
String str = br.readLine();
System.out.println(sc +":" +str);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

2. [代码]写操作Runable

package com.hrd.test.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter; /**
* 作者: ehomeud 创建于: 2015/4/15 13:20
*/
public class WriteThread implements Runnable { private PrintWriter pw;
private BufferedReader br; public WriteThread(PrintWriter pw, BufferedReader br) {
this.pw = pw;
this.br = br;
} @Override
public void run() {
try {
while (true) {
pw.println(br.readLine());
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

3. [代码]服务端ServerSocket

package com.hrd.test.socket;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; /**
* 作者: ehomeud 创建于: 2015/4/15 10:00
*/
public class Server { public static int PORT = 9999;
public static void main(String[] args) {
ServerSocket s = null;
Socket socket = null;
BufferedReader br = null;
PrintWriter pw = null;
BufferedReader console=null; ExecutorService pool = Executors.newFixedThreadPool(2);
try {
//设置服务端通信端口
s = new ServerSocket(PORT);
System.out.println("ServerSocket Start:"+s);
//等待请求,该方法会阻塞,直到获得请求
socket = s.accept();
System.out.println("Connection accept socket:"+socket);
//用于接收客户端发来的请求
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//用于发送返回信息,发送数据要调用.flush()方法
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
console = new BufferedReader(new InputStreamReader(System.in)); pool.submit(new ReadThread(br,"server"));
pool.submit(new WriteThread(pw,console));
while(true){
Thread.sleep(10000);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
System.out.println("关闭中.....");
try {
console.close();
br.close();
pw.close();
socket.close();
s.close();
} catch (Exception e2) {
}
}
}
}

4. [代码]客户端Socket

package com.hrd.test.socket;

import java.io.*;
import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; /**
* 作者: ehomeud 创建于: 2015/4/15 10:10
*/
public class Client { public static void main(String[] args) {
Socket socket = null;
BufferedReader br = null;
PrintWriter pw = null; ExecutorService pool = Executors.newFixedThreadPool(2);
try {
//客户端socket指定服务器的地址和端口号
socket = new Socket("127.0.0.1", Server.PORT);
System.out.println("Socket:" + socket+"客户端启动中...");
//同服务器原理一样
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()))); BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
//提交读
pool.submit(new WriteThread(pw,console));
pool.submit(new ReadThread(br,"client"));
while (true){
Thread.sleep(100000);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
System.out.println("关闭中......");
br.close();
pw.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

java socket编程基础的更多相关文章

  1. Java Socket编程基础篇

    原文地址:Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Sock ...

  2. java socket编程基础(转)

    一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  3. 【转】Java Socket编程基础及深入讲解

    原文:https://www.cnblogs.com/yiwangzhibujian/p/7107785.html#q2.3.3 Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要 ...

  4. 【Socket】Java Socket编程基础及深入讲解

    Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...

  5. Java Socket编程基础(1)

    参考资料: <Java网络编程精解> 孙卫琴 一.socket通信简介 什么是socket,简单来说,在linux系统上,进程与进程之间的通信称为IPC,在同一台计算机中,进程与进程之间通 ...

  6. Java Socket编程基础及深入讲解

    原文链接:https://www.cnblogs.com/yiwangzhibujian/p/7107785.html 原文写的特别好,非常详细,但是禁止转载,那我就不再复制粘贴了! socket实现 ...

  7. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

  8. 如何为可扩展系统进行Java Socket编程

    从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket ...

  9. Java网络编程基础(Netty预备知识)

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...

随机推荐

  1. .NET设计模式(9):桥接模式(Bridge Pattern)(转)

    概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就 ...

  2. 遭遇Asp.Net长文件名下载的问题和解决办法

    在Asp.Net中写了一个附件上传和下载的程序,附件上传到数据库中,然后将附件的GUID保存起来,我们可以根据GUID来找到数据库中的附件,一般附件下载的代码是: <!--<br /> ...

  3. 非阻塞式JavaScript脚本介绍

    JavaScript 倾向于阻塞浏览器某些处理过程,如HTTP 请求和界面刷新,这是开发者面临的最显著的性能问题.保持JavaScript文件短小,并限制HTTP请求的数量,只是创建反应迅速的网页应用 ...

  4. samsung-smart app 开发

    http://www.samsungdforum.com/ http://seller.samsungapps.com/login/signIn.as?returnURL=%2fmain%2fsell ...

  5. Unity3d之音效播放和调用手机震动

    http://blog.csdn.net/sunshine_1984/article/details/12943979 今天研究了下Unity3d音效播放相关内容,整理下实现细节. 1,添加音效文件到 ...

  6. BZOJ1502: [NOI2005]月下柠檬树

    Simpson法相当好用啊!神奇的骗分算法! /************************************************************** Problem: 1502 ...

  7. 解决Myeclipse 编辑jsp页面卡

    解决Myeclipse 编辑jsp页面卡   编辑一个jsp页面时,如果每输入一下,CPU都100%一下,和大家分项一下. 问题: 当你编辑一个jsp页面时,如果每输入一下,CPU都100%一下,3, ...

  8. POJ 1338

    #include<iostream> #include<stdio.h> #include<iomanip> #define MAXN 100000 using n ...

  9. 《Thinking in C++》学习笔记(二)【第三章】

    第三章 C++中的C 3.4.4 指针简介 ‘&’运算符:只要在标识符前加上‘&’,就会得出标识符的地址. C和C++有一个专门存放地址的变量类型.这个变量类型叫做指针(pointer ...

  10. Es使用。

    http://jingyan.baidu.com/article/3052f5a1e8a06397f31f8699.html --------------------------- http://el ...