客户端:

public class Client {

    private int port = 8000;
private String host = "localhost";
private Socket socket; public Client() throws UnknownHostException, IOException {
socket = new Socket(host, port);
} public void readFromUser() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while((line = br.readLine()) != null){
if(line.equals("bye")){
socket.close();
System.out.println("关闭socket");
break;
}
send(line);
}
} public void send(String msg) throws IOException {
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
pw.println(msg);
} public static void main(String args[]) throws UnknownHostException,
IOException {
new Client().readFromUser();
}
}

服务端:

public class Server {

    private int port = 8000;
private ServerSocket serverSocket;
private ExecutorService executorService;
private final int POOL_SIZE = 4; public Server() throws IOException {
serverSocket = new ServerSocket(port, 2);
// 创建线程池
executorService = Executors.newFixedThreadPool(Runtime.getRuntime()
.availableProcessors()
* POOL_SIZE);
System.out.println("服务器启动。。。。。" + "初始线程数:"
+ Runtime.getRuntime().availableProcessors() * POOL_SIZE);
} public void service() throws IOException {
int count = 0;
while (true) {
Socket socket = serverSocket.accept();
System.out.println(++count + "客户端已链接");
// new Thread(new Handler(socket)).start();
executorService.execute(new Handler(socket));
}
} public static void main(String args[]) throws IOException {
new Server().service();
} private class Handler implements Runnable { private Socket socket; public Handler(Socket socket) {
this.socket = socket;
} public void run() {
try {
handle();
} catch (IOException e) {
e.printStackTrace();
}
} private void handle() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if(line.equals("goodbye")){
socket.close();
serverSocket.close();
break;
}
System.out.println("From " + socket.getPort() + ":" + line);
}
}
}
}

服务器采用了JDK自带的线程池来处理并发请求。

还可以使用NIO来实现,即非阻塞通信

Socket通信入门小实例的更多相关文章

  1. socket 通信 入门3 android 客户端 C# 服务端

    这是一个android端操控服务器的例子  就是发送简单指令到服务器  然后服务器响应什么的... 当然这里是未完成的  只是简单展示一下大致思路 首先连接建立起来后  服务端给客户端一条信息  告诉 ...

  2. Python 入门小实例笔记

    实例1:打印用户输入的姓名与手机号码知识点:编码,获取输入,变量,标准输出 #encoding=utf-8 import time #1.提示用户输入信息 name = input ("请输 ...

  3. 简单的Linux下的socket通信,小程序,方便以后查看。

    首先是我的一个出错提示的头文件<myerr.h>,自从用了根本停不下来啊!!! #ifndef _MYERR_H_ #define _MYERR_H_ #include <stdio ...

  4. socket通信入门

    以一个基本的python程序为例解释 源代码如下: #!/usr/bin/env python  #指出代码用什么程序去运行它.首先会到env设置里查找python的安装路径,再调用对应路径下的解释器 ...

  5. Vue中Vuex的详解与使用(简洁易懂的入门小实例)

    怎么安装 Vuex 我就不介绍了,官网上有 就是 npm install xxx 之类的.(其实就是懒~~~哈哈) 那么现在就开始正文部分了 众所周知 Vuex 是什么呢?是用来干嘛的呢? Vuex ...

  6. Linux下简单的socket通信实例

    Linux下简单的socket通信实例 If you spend too much time thinking about a thing, you’ll never get it done. —Br ...

  7. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  8. Flex通信-与Java实现Socket通信实例

    Flex通信-与Java实现Socket通信实例  转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...

  9. php 实例说明 socket通信机制

    php 实例说明 socket通信机制 张映 发表于 2010-04-24 分类目录: php 一,socket是什么 什么是socket 所谓socket通常也称作"套接字",用 ...

随机推荐

  1. python_38_try-except异常处理语句及raise的使用

    # i=10 # print(30/(i-10)) # #程序将会出现以下报错信息 # # Traceback (most recent call last): # # File "C:/U ...

  2. python_19_编码解码

    msg="我爱北京天安门" #字符串转成Byte类型 print(msg.encode())#encode 编码 print(msg.encode(encoding="u ...

  3. matlab一次读取多张图片

    实验平台:matlab R2010Rb 读取C:\Users\KCl\Documents\MATLAB\SRCNN\Set5文件夹下所有bmp文件,并存储到im字典中 clear all clc im ...

  4. 阿里云服务器下安装LAMP环境(CentOS Linux 6.3)(1)

    阿里的云服务器准备好以后,我们首先要做的就是把自己购买的磁盘空间挂载到系统里面,我们为服务器选择的是 Linux 系统,确切说的是 CentOS 系统. 默认阿里云服务器带了一个 20G 的空间,一般 ...

  5. 跟我一起从零开始学WCF系列课程

    http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/WCF_Begin.aspx 服务和协定 服务协定使 ...

  6. Wordpress菜单函数wp_nav_menu各参数详解及示例

    Wordpress菜单函数wp_nav_menu各参数详解及示例   注册菜单 首先要注册菜单,将以下函数添加至function.php函数里   register_nav_menus(array( ...

  7. java web用户登录界面

    做这次实验,主要用到了mysql  java web 的 内容 实验代码: IUserDao.java package com.jaovo.msg.dao; import java.util.List ...

  8. Linux-准备工作

    首先安装一个box,安装一个centos7,然后就是xshell,接下来就是 查看ip ifconfig ip addr vi /etc/sysconfig/network-scripts/ifcfg ...

  9. tp5查询

    TP5的EXP.批量查询.聚合查询等. <!--more--> //使用EXP条件表达式,表示后面是原生的SQL表达式 $result = Db::table('think_inno')- ...

  10. JZOJ 5777. 【NOIP2008模拟】小x玩游戏

    5777. [NOIP2008模拟]小x玩游戏 (File IO): input:game.in output:game.out Time Limits: 1000 ms  Memory Limits ...