socket编程演示样例(多线程)
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编程演示样例(多线程)的更多相关文章
- MVC模式编程演示样例-登录验证(静态)
好,上篇博客分享了本人总结的JSP-Servlet-JavaBean三层架构编程模式的实现思想和基本流程,接下来给大家分享一个MVC编程模式的实现演示样例-登录验证的过程,这里我仍然用的是静态的验证u ...
- 【Java】Java Socket 通信演示样例
用socket(套接字)实现client与服务端的通信. 这里举两个样例: 第一种是每次client发送一个数据,服务端就做一个应答. (也就是要轮流发) 另外一种是client能够连续的向服务端发数 ...
- 在VC6.0中多线程编程演示样例(带同步信号量)
直接上代码: #include <windows.h>//必要的头文件,使用Windows API函数 #include <stdio.h> int index = 0; in ...
- 【UNIX网络编程(三)】TCP客户/server程序演示样例
上一节给出了TCP网络编程的函数.这一节使用那些基本函数编写一个完毕的TCP客户/server程序演示样例. 该样例运行的过程例如以下: 1.客户从标准输入读入一行文本,并写给server. 2.se ...
- C编程规范, 演示样例代码。
/*************************************************************** *Copyright (c) 2014,TianYuan *All r ...
- Android之——多线程下载演示样例
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46883927 一.概述 说到Android中的文件下载.Android API中明 ...
- Java多线程演示样例(模拟通话,sleep,join,yield,wait,notify,Semaphore)
主线程等待子线程的多种方法 synchronized浅析 sleep 是静态方法,Thread.sleep(xx)谁调用谁睡眠. join 是合并方法.当前线程调用其它线程xx.join()则等到xx ...
- 多线程本地图片载入演示样例【OpenCV】【Pthread】
Pthread barrier的简单使用演示样例: C++代码例如以下: // ThreadingLoadImages.cpp : 定义控制台应用程序的入口点. // #include "s ...
- Thrift的安装和简单演示样例
本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述 ...
随机推荐
- 程序员面试宝典 笔记(第六章 预处理 const 和sizeof())
void main() { "; cout<< cout<< "; cout<< cout<<strlen(ss2)<< ...
- Oracle基础 01 表空间 tablespace
--查看表空间 select * from dba_tablespaces; select * from v$tablespace; select * from dba_data_files; --查 ...
- JSP(1) - JSP简介、原理、语法 - 小易Java笔记
1.JSP简介 (1)JSP的全称是Java Server Pages(运行在服务器端的页面),实际就是Servlet(学习JSP的关键就是时刻联想到Servlet) (2)JSP.Servlet各自 ...
- Mac-安装itellij idea
1.安装解压 Unzip and copy JetbrainsCrack.jar to /Applications/CLion.app/Contents/bin/JetbrainsCrack.jar ...
- [ MongoDB ] 副本集的搭建及测试
Replica Sets 复制 (副本集) node1: 10.0.0.10node2: 10.0.0.11node3: 10.0.0.12 副本集结构图:
- 生产环境安装centos时的磁盘规划
一般来说,分区要按照公司领导的要求来执行.但是如果没有要求,一般按照下面的方法进行磁盘规划. /boot分区200M: swap分区分内存的2倍.如果内存大于等于8G,那么swap分8G即可: /分区 ...
- springboot 通用Mapper使用
https://blog.csdn.net/dwf_android/article/details/79359360 https://www.cnblogs.com/larryzeal/p/58741 ...
- 使用jsonp进行跨域请求
使用jsonp进行跨域请求 在实际的业务中很多时候需要用到跨域请求,然而jsonp为我们提供了一种非常方便的跨域请求的方式,具体实现代码如下: $.ajax({ type:"get" ...
- 浙江省第十二届省赛 B - Team Formation
Description For an upcoming programming contest, Edward, the headmaster of Marjar University, is for ...
- HDU 2612 Find a way【多起点多终点BFS/两次BFS】
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...