由于工作中会遇到Socket编程,网上找了下原理,下面写了个单线程的!!
下面是客户端代码:
public class TcpSocketClientTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
try{
java.net.Socket socket = new java.net.Socket("127.0.0.1",9787);
//往服务器端发送数据
java.io.OutputStream outputStream = socket.getOutputStream();
java.io.DataOutputStream dataOutputStream = new java.io.DataOutputStream(outputStream);
//从服务器端读取数据
java.io.InputStream inputStream = socket.getInputStream();
java.io.DataInputStream dataInputStream = new java.io.DataInputStream(inputStream);
String msg = null;
while(true){
msg = clientSay();
if(msg != null && !"exit".equalsIgnoreCase(msg) && !"quit".equalsIgnoreCase(msg)){
//首先往服务器发数据
System.out.println("客户端发给服务端:"+msg);
dataOutputStream.writeUTF(msg);
//然后从服务器端收数据
msg = dataInputStream.readUTF();
System.out.println("客户端收到服务端:"+msg);
}
else{
dataOutputStream.writeUTF("client:"+"ByeBye");
inputStream.close();
dataInputStream.close();
socket.close();
return;
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
private static String clientSay(){
java.io.InputStreamReader inputStreamReader = new java.io.InputStreamReader(System.in);
java.io.BufferedReader bufferReader = new java.io.BufferedReader(inputStreamReader);
String msg = null;
try{
msg = bufferReader.readLine();
}
catch(java.io.IOException e){
e.printStackTrace();
}
return msg;
}
}
下面是服务端代码:
public class TcpSocketServerTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
try{
java.net.ServerSocket serverSocket = new java.net.ServerSocket(9787);
java.net.Socket socket = serverSocket.accept();
//从客户端读取数据
java.io.InputStream inputStream = socket.getInputStream();
java.io.DataInputStream dataInputStream = new java.io.DataInputStream(inputStream);
//往客户端发送数据
java.io.OutputStream outputStream = socket.getOutputStream();
java.io.DataOutputStream dataOutputStream = new java.io.DataOutputStream(outputStream);
String msg = null;
while(true){
msg = dataInputStream.readUTF();
if(msg != null && !"exit".equalsIgnoreCase(msg) && !"quit".equalsIgnoreCase(msg)){
System.out.println("服务端收到客户端:"+msg);
msg = serverSay();
System.out.println("服务端发给客户端:"+msg);
dataOutputStream.writeUTF(msg);
}
else{
inputStream.close();
dataInputStream.close();
socket.close();
return;
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
private static String serverSay(){
java.io.InputStreamReader inputStreamReader = new java.io.InputStreamReader(System.in);
java.io.BufferedReader buffReader = new java.io.BufferedReader(inputStreamReader);
String msg = null;
try{
msg = buffReader.readLine();
}
catch(java.io.IOException e){
e.printStackTrace();
}
return msg;
}
}
仅供参考!!