client代码例如以下:

import java.io.*;
import java.net.*;
import java.util.Scanner; public class SimpleChatClient {
BufferedReader reader;
PrintWriter writer;
Socket sock; public void go(){
System.out.println("客户端启动!");
setUpNetworking();
//发送数据到server
Scanner scanner=new Scanner(System.in);
String sendString=scanner.nextLine();
while(sendString!=null&&!sendString.equals("byebye")){
writer.println(sendString);
writer.flush();
sendString=scanner.nextLine();
}
scanner.close();
System.out.println("客户端退出! ");
} public void setUpNetworking(){
try {
sock=new Socket("127.0.0.1",5000);
InputStreamReader streamReader=new InputStreamReader(sock.getInputStream());
reader=new BufferedReader(streamReader);
writer=new PrintWriter(sock.getOutputStream());
System.out.println("networking established");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleChatClient client=new SimpleChatClient();
client.go();
} }

server端代码例如以下:

import java.io.*;
import java.net.*;
public class SimpleChatServer {
//内部类
public class ClientHandler implements Runnable{
BufferedReader reader;
Socket sock; public ClientHandler(Socket clientSocket){
sock=clientSocket;
InputStreamReader isReader;
try {
isReader = new InputStreamReader(sock.getInputStream());
reader=new BufferedReader(isReader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
@Override
public void run() {
// TODO Auto-generated method stub
String messageString;
try {
while((messageString=reader.readLine())!=null){
System.out.println("read "+messageString);
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("有一个连接断开");
}
} }
public void go(){
System.out.println("服务器启动成功! ");
ServerSocket serverSock;
try {
serverSock = new ServerSocket(5000);
while(true){
Socket clientSocket=serverSock.accept();
Thread thread=new Thread(new ClientHandler(clientSocket));
thread.start();
System.out.println("got a connection!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public static void main(String[] args) {
// TODO Auto-generated method stub
new SimpleChatServer().go();
} }

socket编程演示样例(多线程)的更多相关文章

  1. MVC模式编程演示样例-登录验证(静态)

    好,上篇博客分享了本人总结的JSP-Servlet-JavaBean三层架构编程模式的实现思想和基本流程,接下来给大家分享一个MVC编程模式的实现演示样例-登录验证的过程,这里我仍然用的是静态的验证u ...

  2. 【Java】Java Socket 通信演示样例

    用socket(套接字)实现client与服务端的通信. 这里举两个样例: 第一种是每次client发送一个数据,服务端就做一个应答. (也就是要轮流发) 另外一种是client能够连续的向服务端发数 ...

  3. 在VC6.0中多线程编程演示样例(带同步信号量)

    直接上代码: #include <windows.h>//必要的头文件,使用Windows API函数 #include <stdio.h> int index = 0; in ...

  4. 【UNIX网络编程(三)】TCP客户/server程序演示样例

    上一节给出了TCP网络编程的函数.这一节使用那些基本函数编写一个完毕的TCP客户/server程序演示样例. 该样例运行的过程例如以下: 1.客户从标准输入读入一行文本,并写给server. 2.se ...

  5. C编程规范, 演示样例代码。

    /*************************************************************** *Copyright (c) 2014,TianYuan *All r ...

  6. Android之——多线程下载演示样例

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46883927 一.概述 说到Android中的文件下载.Android API中明 ...

  7. Java多线程演示样例(模拟通话,sleep,join,yield,wait,notify,Semaphore)

    主线程等待子线程的多种方法 synchronized浅析 sleep 是静态方法,Thread.sleep(xx)谁调用谁睡眠. join 是合并方法.当前线程调用其它线程xx.join()则等到xx ...

  8. 多线程本地图片载入演示样例【OpenCV】【Pthread】

    Pthread barrier的简单使用演示样例: C++代码例如以下: // ThreadingLoadImages.cpp : 定义控制台应用程序的入口点. // #include "s ...

  9. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

随机推荐

  1. float和double类型的存储方式

    Float double 类型在计算机的存储方式 计算机中只认识10的二进制数,那么该如何存储小数呢? 那么我们先看Floa类型: Float在计算机(32位)中是4个字节的,具体地:第一位为符号位0 ...

  2. linux+win7双系统重装win7修复grub的办法

    本人是debian+win7的双系统, 下面介绍下重装win7的整个过程以及遇到的一些小问题,在查阅相关博客和朋友的帮助下成功修复, 记录下以便以后有不时之需, 也希望能帮助到遇到同样问题的朋友! 首 ...

  3. WIN7下使用sublime text3替代arduino IDE(安装方法和所遇到的问题)

    用了一段时间Arduino IDE,感觉比较简陋~~很多功能都没有~虽然不影响使用啦~(主要是启动速度有点慢...我的破笔记本….), 网上搜寻了下,发现sublime text有插件可以替代,这就比 ...

  4. MySQL 8.0.13安装教程(windows 64位) (转)

    官先去网下载点击MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini的文件解压后的目录并没有my.ini文件,没关系可以自行创建.在安装根目录下添加my.ini(新建文本文件, ...

  5. poj2155

    poj2155 题意 二维区间更新,单点查询. 分析 二维线段树. 也可以用二维树状数组去做,维护矩阵前缀和. code #include<cstdio> using namespace ...

  6. rsync用于同步目录

    rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输.rsync中一项与其他大部分类似程序或协定中所未见的重要特性是 ...

  7. 【PHP】mysql基本操作整合

    php版本:PHP Version 5.5.1 环境:windows10 XMAPP 数据库:mysql 代码: <?php function connetionDB($servername, ...

  8. 正则 lazy

  9. Html5+CSS

    1. 内联样式是为元素添加样式的最简单有效的方式,但是更易于维护的方式是使用层叠样式表CSS(Cascading Style Sheets). <style>  选择器 {属性名称: 属性 ...

  10. SHELL 在指定行的前/后插入指定内容

    #如果知道行号可以用下面的方法 sed -i '88 r b.file' a.file    #在a.txt的第88行插入文件b.txt awk '1;NR==88{system("cat ...