1、socket服务端
package com.socket.project;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Service {
public static void main(String[] args) {
Socket socket=null;
InputStream is=null;
InputStreamReader isread=null;
BufferedReader red=null;
try {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
ServerSocket server=new ServerSocket(8089);
System.out.println("服务器启动监听。。。。。。");
//监听端口
while(true){
socket=server.accept();
//获取输入流
is=socket.getInputStream();
isread=new InputStreamReader(is);
//创建缓冲区
red=new BufferedReader(isread);
String data=null;
while((data=red.readLine())!=null){
System.out.println("客户端上传的数据是:"+data);
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(red!=null)
try {
red.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(isread!=null)
try {
isread.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(is!=null)
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2、客户端
package com.socket.project;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketClient {
//socket 客户端
public static void main(String[] args) {
OutputStream out=null;
PrintWriter writer=null;
try {
//创建客户端socket 传递的 地址 端口
Socket sock=new Socket("localhost", 8089);
out=sock.getOutputStream();//字节流
writer=new PrintWriter(out);//将字节流转换打印流
writer.print("我想告诉你,我一直在这里等着你");
writer.flush();
//关闭socket输出流
sock.shutdownOutput();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭流
if(writer!=null)writer.close();
if(out!=null)
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.socket.thread;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketClient {
//socket 客户端
public static void main(String[] args) {
OutputStream out=null;
PrintWriter writer=null;
InputStream input=null;
InputStreamReader read=null;
BufferedReader red=null;
Socket sock=null;
try {
//创建客户端socket 传递的 地址 端口
sock=new Socket("localhost", 8089);
out=sock.getOutputStream();//字节流
writer=new PrintWriter(out);//将字节流转换打印流
writer.print("我想告诉你,我一直在这里等着你");
writer.flush();
//关闭socket输出流
sock.shutdownOutput();
//获取服务端返回的信息
input =sock.getInputStream();//获取输入流
read=new InputStreamReader(input);
red=new BufferedReader(read);
String data="";
while((data=red.readLine())!=null){
System.out.println("服务端回复你:"+data);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭流
if(writer!=null)writer.close();
if(out!=null)
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
if(red!=null)
try {
red.close();
} catch (IOException e) {
e.printStackTrace();
}
if(read!=null)
try {
read.close();
} catch (IOException e) {
e.printStackTrace();
}
if(input!=null)
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
if(sock!=null)
try {
sock.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.socket.thread;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Service {
public static void main(String[] args) {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
try {
ServerSocket serverSocket=new ServerSocket(8089);
Socket socket=null;
while(true){//一直监听
socket=serverSocket.accept();
//启动一个服务
SocketServiceThread thread=new SocketServiceThread(socket);
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.socket.thread;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class SocketServiceThread extends Thread {
private Socket socket=null;
public SocketServiceThread(Socket socket){
this.socket=socket;
}
//执行线程操作
@Override
public void run() {
InputStream input=null;
InputStreamReader red=null;
BufferedReader br=null;
OutputStream out=null;
PrintWriter writer=null;
try {
//获取输入流
input=socket.getInputStream();
red=new InputStreamReader(input);
//缓冲字符
br=new BufferedReader(red);
String data="";
while((data=br.readLine())!=null){
System.out.println("客户端来信说:"+data);
}
//关闭写入流
socket.shutdownInput();
//获取输出流
out=socket.getOutputStream();// 获取输出字节流
writer=new PrintWriter(out);//将字节转换打印流
writer.write("欢迎光临!!");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(br!=null)
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
if(red!=null)
try {
red.close();
} catch (IOException e) {
e.printStackTrace();
}
if(input!=null)
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
if(writer!=null)writer.close();
if(out!=null)
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
原文地址:http://blog.csdn.net/itlqi/article/details/44994625