java 客户端和服务器端相互通信(都是从控制台输入)
来源:互联网 发布:sql查询分析器怎么打开 编辑:程序博客网 时间:2024/05/22 05:04
一、客户端的程序(没用线程,本来想建的,但又觉得麻烦,我是个懒人)
package day133;
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
// 发送消息
Socket socket = null;
PrintStream ps = null;
BufferedReader br = null;
BufferedReader br2 = null;
try {
socket = new Socket("127.0.0.1", 5001);
ps= new PrintStream(socket.getOutputStream());//流与套接字之间建立联系
br = new BufferedReader(new InputStreamReader(System.in));// 从控制台输入要发送到服务器端的消息
br2 = new BufferedReader(new InputStreamReader(socket .getInputStream()));//从服务器端接收到的消息
while (true) { //一直循环,一直到从客户端输入quit为止
String string = br.readLine();
ps.println(string); // 向服务器中发送消息
ps.flush();
if (string.trim().equals("quit"))// 退出
{
break;
}
// 从服务器端得到消息
String serverString = br2.readLine();
System.out.println("服务器:" + serverString);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
ps.close();
try {
br1.close();
br2.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
}
二、服务器端的程序(用了线程)
/************************运行的主函数*********************/
package day133;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
/**
* @服务器端程序
*/
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(5001);
socket = serverSocket.accept();
// 放在一个线程中
new ServerThread(socket).start();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/****************ServerThread**********************/
package day133;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ServerThread extends Thread {
// 对一些东西的初始化放在构造函数中
// 放什么呢,读取文件的东西Buffered
BufferedReader bReader = null;// 读取信息
BufferedReader bReader1 = null;
PrintStream ps = null;
Socket socket = null;
public ServerThread(Socket socket) {
this.socket = socket;
try {
bReader = new BufferedReader(new InputStreamReader(socket
.getInputStream()));// 读信息
bReader1 = new BufferedReader(new InputStreamReader(System.in));
ps = new PrintStream(socket.getOutputStream());// 向客户端输出信息
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
while (true) {
String info = bReader.readLine();
// 从服务器端接收的消息
if (info.equals("")) {
System.out.println("用户没有说话");
} else {
if (info.trim().equals("quit")) {
System.out.println("用户退出连接");
break;
}
System.out.println("用户说: " + info);
}
// 发送到服务器端的消息
String serverInfo = bReader1.readLine();
ps.println(serverInfo);
if (!serverInfo.trim().equals("")) {
if (serverInfo.trim().equals("quit")) {
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
ps.close();
try {
bReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
注意:这个程序只能客户端先运行,而且只能打一行,然后切换到服务器端运行,否者会出错。
- java 客户端和服务器端相互通信(都是从控制台输入)
- java socket 客户端和服务器端互相通信(聊天)
- java socket 客户端和服务器端互相通信(聊天)
- 客户端和服务器端通信
- 客户端和服务器端通信
- java从控制台输入
- java从控制台输入
- 服务器端和android客户端通信 服务器端实现
- java socket编程 初级 服务器端和客户端 通信
- Socket通信——C++服务器端和Java客户端
- java-基本的Socket编程-实现服务器端和客户端通信
- 上机题目(初级)- Java网络操作-Socket实现客户端和服务器端通信(Java)
- 上机题目(初级)- Java网络操作-Socket实现客户端和服务器端通信二(Java)
- java 从控制台输入密码
- JAVA-从控制台输入数据
- 【java】从控制台获取输入
- java从控制台获得输入
- 从控制台获取输入-Java
- C语言helloworld从运行到结束过程(我的理解)
- (10) iphone 开发 用户点击,触摸和手势识别 解析
- Android 的 EditText inputtype
- 大整数加法
- Android EditText 不弹出输入法总结
- java 客户端和服务器端相互通信(都是从控制台输入)
- Android 开发简介
- iphone应用程序中直接拨打分机号
- GlusterFS之内存池(mem-pool)实现原理及代码详解
- Linux物理内存概述
- Box2D学习指南
- 第十周任务一
- oracle基本知识
- 小谈教育模式-导师制