资源简介
在主线程中通过控制台读取键盘输入时,会产生阻塞。故另外开启一个线程,用于接受客户端的socket消息。服务器在收到一个socket连接之后,把该socket保存到队列中,并对队列中的每个socket开启各自的读写线程。测试可以在不同控制台运行server和client,服务器接收消息时,会显示消息来源
代码片段和文件信息
import java.net.ServerSocket;
import java.net.Socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class socketClient
{
private DataOutputStream output;
private DataInputStream input;
private String clientName;
public static void main(String[] args)
{
//在main函数中,启动服务器的socket
new socketClient().ConnectServer();
}
public void ConnectServer()
{
try
{
Socket socket = new Socket(“127.0.0.1“10001);
clientName = socket.getInetAddress().toString();
input = new DataInputStream(socket.getInputStream());
output = new DataOutputStream(socket.getOutputStream());
new readServer().start();
new writeServer().start();
}
catch(Exception e) {System.out.println(e.toString());}
}
public class readServer extends Thread
{
private Socket client;
public void run()
{
String msg;
try
{
while(true)
{
msg = input.readUTF();
if(msg!=null)
System.out.println(“收到消息:【“+clientName+“】 “+msg);
}
}
catch(Exception e) {System.out.println(e.toString());}
}
}
public class writeServer extends Thread
{
private Socket client;
public void run()
{
try
{
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while(true)
{
if(stdIn.ready())
{
userInput = stdIn.readLine();
if(userInput!=“exit“)
{
output.writeUTF(userInput);
System.out.println(“已发送消息给【“+clientName+“】“+userInput);
}
}
}
}
catch(Exception e) {System.out.println(e.toString());}
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1778 2012-07-11 16:00 socket通过两个线程读写,可同时收听多个终端\socketClient.java
文件 2542 2012-07-11 16:24 socket通过两个线程读写,可同时收听多个终端\socketServer.java
目录 0 2012-07-11 16:27 socket通过两个线程读写,可同时收听多个终端
----------- --------- ---------- ----- ----
4320 3
- 上一篇:JAVA写的doodleJump涂鸦跳跃
- 下一篇:图书借阅系统Java课程设计
相关资源
- 图书借阅系统Java课程设计
- JAVA写的doodleJump涂鸦跳跃
- Java数据结构算法面试题
- java一个完整的物业管理系统有完整的
- echarts后台封装java
- 毕业实训求职招聘系统源码完整《j
- java二级文件目录系统
- java文件上传commons-fileupload1.3.1jar
- java课程设计--记事本程序
- html5实现摄像头拍照并使用java进行照
- autoitx4java.jar
- taobao-sdk-java-auto_20171127
-
多线程的应用ap
plet程序 - java实现cache小
- java笔试题
- 21点游戏完整版纯java代码
- 基于Java+Oracle的企业人事管理系统
- JAVA数据库操作的小项目
- 精通Java EEEclipse Struts2 Hibernate Spring整
- java连接mysql的 gui图形界 面实现增删
- java swing 时间日期选择控件
- 分页功能实现java
- 微信小程序支付demo后端(springboot)
- 开发中需要的javax.sound jar包
- java即时通信系统
- JAVA微信开发之AirKiss 简单demo
- 基于java实现的决策树代码
- 人工智能实验 ID3决策树java实现
- 软件体系结构 画板 附实验报告 java
- 北邮java专业选修课作业题目
评论
共有 条评论