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

(TCP)控制台循环输入数据 发送给 服务端

2017-08-22 22:31 411 查看
1 . 客户端

package com.qf.demo4;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

import com.qf.demo3.Util;

/**
* 控制台循环输入数据 发送给 服务端
*
* @author Administrator
*
*/
public class Client {

public static void main(String[] args) {
// 1 创建快递点
Socket socket = null;
OutputStream os = null;
InputStream is = null;
try {

socket = new Socket("10.0.143.51", 8888);
// 2 准备要发送的数据
Scanner scanner = new Scanner(System.in);
// 3 获得快递员
os = socket.getOutputStream();
is = socket.getInputStream();
while (true) {
String data = scanner.next();
os.write(data.getBytes());
os.flush();
if ("over".equals(data)) {
break;
}

// 收到回信
byte[] bs = new byte[1024];
int num = is.read(bs);
String reault = new String(bs, 0, num);
System.out.println("服务器回复的数据是  : " + reault);
if ("over".equals(reault)) {
break;
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
Util.closed(null, socket, is, os);
}

}
}


2 .服务器端,注意while中的代码,在while中回复信息

package com.qf.demo4;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

import com.qf.demo3.Util;

public class Server {

public static void main(String[] args) {
// 1 创建 服务端的socket
ServerSocket serverSocket = null;
Socket socket =null;
InputStream is =null;
OutputStream os  = null;
try {
serverSocket = new ServerSocket(8888);
// 2 等待接收客户端的数据
socket = serverSocket.accept();
is = socket.getInputStream();
os  =  socket.getOutputStream();
Scanner scanner = new Scanner(System.in);
// 3  读取信息
while(true){
byte[] bs = new byte[1024];
//会接着上次读取的结束位置往后读取
int num = is.read(bs);
String string = new String(bs, 0, num);
System.out.println("客户端发送了: "+string);
if("over".equals(string)){
break;
}

// 以下是回复数据
String result = scanner.next();
os.write(result.getBytes());
os.flush();
if("over".equals(result)){
break;
}

}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
Util.closed(serverSocket, socket, is, os);
}

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