用Java Socket编程,实现简单的Echo功能

如:客户端从键盘输入hi(当用户输出exit退出程序),服务器响应为hi(服务器要求为多线程)... 如:客户端从键盘输入hi(当用户输出exit退出程序),服务器响应为hi(服务器要求为多线程) 展开
 我来答
百度网友5195152
推荐于2016-06-30 · TA获得超过1164个赞
知道大有可为答主
回答量:1314
采纳率:0%
帮助的人:729万
展开全部
// 服务器
import java.io.*;
import java.net.*;

public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);

while (true) {
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("exit"))
break;
}
client.close();
}
}
}

// 客户端
import java.net.*;
import java.io.*;

public class Client{
static Socket server;

public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));

while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}

server.close();
}
}
追问
请问在那里编写服务器代码 和客户端代码
好像不是class里吧
追答
就是 在class里

两个class
一个服务器
一个客户端
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
f279885782
2012-05-31
知道答主
回答量:22
采纳率:0%
帮助的人:11.4万
展开全部
import java.net.Socket;
//客户端
public class Client {
public static void main(String[] args){
try {
Socket soc=new Socket("localhost",9999);
//客户端写线程
ClientWriter cw=new ClientWriter(soc);
cw.start();
//客户端读线程
ClientReader cr=new ClientReader(soc);
cr.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class ClientReader extends Thread{
private Socket cSoc;
public ClientReader(Socket cSoc){
this.cSoc=cSoc;
}
@Override
public void run() {
try {
while(true){
InputStream is=cSoc.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String mess=br.readLine();
System.out.println(mess);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ClientWriter extends Thread{
private Socket cSoc;
public ClientWriter(Socket cSoc){
this.cSoc=cSoc;
}
@Override
public void run() {
try {
while(true){
OutputStream os=cSoc.getOutputStream();
PrintWriter pw=new PrintWriter(os);
Scanner sc=new Scanner(System.in);
String mess=sc.nextLine();
pw.println(mess);
pw.flush();
}

} catch (IOException e) {
e.printStackTrace();
}
}
}

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

//服务器
public class Service {
public static void main(String[] args){
try {
ServerSocket serverSoc=new ServerSocket(9999);
System.out.println("等待连接");
Socket soc=serverSoc.accept();
System.out.println("连接完毕");
//读线程
ServiceReader sr=new ServiceReader(soc);
sr.start();
//写线程
ServiceWriter sw=new ServiceWriter(soc);
sw.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class ServiceReader extends Thread{
private Socket sSoc;
public ServiceReader(Socket sSoc){
this.sSoc=sSoc;
}
public void run() {
try {
while(true){
InputStream is=sSoc.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String mess=br.readLine();
System.out.println(mess);
}
} catch (IOException e) {
e.printStackTrace();
}

}
}
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ServiceWriter extends Thread{
private Socket sSoc;
public ServiceWriter(Socket sSoc){
this.sSoc=sSoc;
}
@Override
public void run() {
try {
while(true){
OutputStream os=sSoc.getOutputStream();
PrintWriter pw=new PrintWriter(os);
Scanner sc=new Scanner(System.in);
String mess=sc.nextLine();
pw.println(mess);
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣鸾OJ
2015-09-29 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:121万
展开全部
// 服务器
import java.io.*;
import java.net.*;

public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);

while (true) {
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("exit"))
break;
}
client.close();
}
}
}

// 客户端
import java.net.*;
import java.io.*;

public class Client{
static Socket server;

public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));

while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}

server.close();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式