您的位置:首页 > 理论基础 > 计算机网络

java学习之网络编程之echo程序

2016-01-23 23:39 453 查看
服务端的实现

package com.gh.echo;
import java.io.*;
import java.net.*;
/**
* echo服务器程序
* 实现 不断接收字符串 ,然后返回一个echo+字符串
* 服务程序写成多线程
* @author ganhang
*
*/
public class EchoServerDemo {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8000);
System.out.println("服务器已启动。");
int i=1;
while (true) {
System.out.println("服务器正在等待连接...");
Socket s = ss.accept();
new Thread(new UserThread(s),"用户"+i++).start();//来一个用户启动一个线程
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 用户线程
* @author ganhang
*/
class UserThread implements Runnable{
private Socket s;
public UserThread(Socket s) {
this.s=s;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"-已连接");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
while(true){//循环读入知道读入bye
String info=br.readLine();//因为是读一行所以客服端发送过来的字符串必须有"\n"换行符
System.out.println(info);
if("".equals(info)||"bye".equals(info)){
break;
}else{
bw.write("echo:你好"+Thread.currentThread().getName()+"\n");//客服端用的读一行所以这边末尾加换行符
bw.flush();//缓存流必须刷新
}
}
br.close();
bw.close();
}catch(IOException e){
e.printStackTrace();
}
}

}


客户端的实现

package com.gh.echo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
/**
* echo客户端
* 实现从控制台写字符串发送给服务器,接收服务器发回来的字符串
* @author ganhang
*
*/
public class EchoClientDemo {

public static void main(String[] args) {
try {
Socket sk=new Socket("",8000);
System.out.println("与服务器连接成功。");
Scanner sc=new Scanner(System.in);
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
while(true){
System.out.println("请输入文字:");
String info=sc.next();
if("bye".equals(info)){
break;
}else{
bw.write(info+"\n");
bw.flush();
System.out.println(br.readLine());
}
}
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: