顺序跟服务端的对应,说白了这个比服务器端简单一些,就分是io弄出来的仍是nio弄出来的,而后就是一些细节了好比socket,InetAddress之类的,仍是得多敲,敲多了就熟了。 java
1 import java.io.*;
import java.util.*;
import java.net.*;
public class EchoClient{
private String host ="localhost";
private int port = 8000;
private Socket socket;
public EchoClient() throws IOException{
socket =new Socket(host,port);
}
public static void main(String[] args) throws IOException{
new EchoClient().talk();
}
private PrintWriter getWriter(Socket socket)throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket)throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
public void talk() throws IOException{
try{
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
String msg = null;
while((msg = localReader.readLine())!= null){
pw.println(msg);
System.out.println(br.readLine());
if(msg.equals("bye"))
break;
}
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(socket != null)
socket.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
} 服务器
2这个是用nio写的 socket
import java.net.*;
import java.nio.channels.*;
import java.nio.*;
import java.io.*;
import java.nio.charset.*; .net
public class EchoClient2{
private SocketChannel socketChannel = null;
public EchoClient2()throws IOException{
socketChannel = SocketChannel.open();
InetAddress ia = InetAddress.getLocalHost();
InetSocketAddress isa = new InetSocketAddress(ia,8000);
socketChannel.connect(isa);//链接服务器
System.out.println("与服务器的链接创建成功");
}
private PrintWriter getWriter(Socket socket)throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket)throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
public void talk()throws IOException{
try{
BufferedReader br = getReader(socketChannel.socket());
PrintWriter pw = getWriter(socketChannel.socket());
BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
String msg = null;
while((msg = localReader.readLine())!= null){
pw.println(msg);
System.out.println(br.readLine());
if(msg.equals("bye"))
break;
}
}catch(IOException e)
{
e.printStackTrace();
}finally{
try{
socketChannel.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
public static void main(String args[])throws IOException{
new EchoClient2().talk();
}
} get