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

java Socket编程初探_TCP

2016-03-30 14:17 471 查看
TCP 客户端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

public static void main(String[] args) {
// TODO Auto-generated method stub
Client client = new Client();
try {
client.request();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void request() throws Exception{
Socket client = new Socket("127.0.0.1", 8888);
client.setSoTimeout(10*1000);
//input from keyboard
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));

//send to server
PrintStream out=new PrintStream(client.getOutputStream());

//get from server
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));

boolean flag=true;
while(flag){
System.out.println("Input:");
String tmp=input.readLine();
out.println(tmp);
if(tmp.equals("bye")){
flag = !flag;
}
else{
String resp=in.readLine();
System.out.println("It comes from server:"+resp);
}
}
}
}


TCP 服务端

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class Server {

static List<Socket> list;
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
list = new ArrayList<>();
ServerSocket server = new ServerSocket(8888);
Socket client = null;
boolean f=true;
while(f){
client = server.accept();
System.out.println("Conn to client.");
new Thread(new ServerThread(client)).start();
}
server.close();
}
}


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

public class ServerThread implements Runnable {

private Socket client;

public ServerThread(Socket client) {
// TODO Auto-generated constructor stub
this.client = client;
Server.list.add(client);
}

@Override
public void run() {
// TODO Auto-generated method stub

try {
// send to client

// get from client
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
boolean flag = true;
while (flag) {
String string = in.readLine();
if (string == null || string.length() == 0) {
flag = false;
} else {
if (string.equals("bye")) {
flag = !flag;
} else {
for (int i = 0; i < Server.list.size(); i++) {
PrintStream out = new PrintStream(Server.list.get(i).getOutputStream());
out.println("echo:" + string);
}
}
System.out.println("It comes from client:" + string);
}
}
close();
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public void close(){
for (int i = 0; i < Server.list.size(); i++) {
try {
Server.list.get(i).close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//Server.list.remove(index)
}

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