Java中socket的代码模板

java的的socket的代码编写与C 语言的不太一样,C 语言的代码简练有深度,java的写起来复杂,但是不是那么难懂,因此在这里记录一下模板,防止以后忘记,总共四个文件,分别是ServiceServer.java(用于创建socket服务器),ServiceTask.java(服务器所提供的业务),DataProcess.java(服务器业务数据处理),ServiceCliect.java(socket客户端以及相关业务处理),代码如下

1.ServiceServer.java

package bigdata.socket;

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;

import org.apache.log4j.net.SocketServer;

public class ServiceServer {
	
	
	public static void main(String[] args) throws IOException {
		
		
		//创建一个serversocket ,然后绑定ip地址和端口号
		ServerSocket server = new ServerSocket();
		server.bind(new InetSocketAddress("lanc01", 8899));		
		//等待接受客户端的连接,阻塞程序
		while(true){	
			
			Socket accept = server.accept();//
			new Thread(new ServiceTask(accept)).start();
		}
	}
}

2.ServiceTask.java

package bigdata.socket;

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 ServiceTask implements Runnable{
	
	Socket socket;	
	InputStream inputStream = null;
	OutputStream outputStream = null;
	
	public ServiceTask(Socket accept) {
		this.socket=accept;
	}	
	//客户端业务数据通信处理
	@Override
	public void run() {
		
		try {
			//从socket连接中获取到与client之间的网络通信输入流
			inputStream = socket.getInputStream();
			outputStream = socket.getOutputStream();//输出流
			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
			//从网络通信输入流中读取客户端发送过来的数据
			//注意:socketinputstream的读书句的方法都是阻塞的
			String readLine = bufferedReader.readLine();
			//获取数据后业务处理
			DataProcess dataProcess = new DataProcess();
			String result = dataProcess.getdata(readLine);
			
			//将处理完的数据写到socket的输出流中,然后发送给客户端
			//带回车的println,如果没有回车,就会一直读或者写,然后阻塞
			PrintWriter printWriter = new PrintWriter(outputStream);
			printWriter.println(result);
			printWriter.flush();			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				inputStream.close();
				outputStream.close();
				socket.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}			
		}
	}

}

3.DataProcess.java

package bigdata.socket;

public class DataProcess {
	public String getdata(String param) {
		

		return "linux +++" + param;
		
	}

}

4.ServiceCliect.java

package bigdata.socket;

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.ServerSocket;
import java.net.Socket;

public class ServiceCliect {
	public static void main(String[] args) throws IOException {
		
		//建立socket向服务器发送连接请求
		Socket socket = new Socket("lanc01",8899 );
		InputStream inputStream = socket.getInputStream();
		OutputStream outputStream = socket.getOutputStream();
		//客户端向socket发送数据
		PrintWriter printWriter = new PrintWriter(outputStream);
		printWriter.println("==hello==");
		printWriter.flush();
		//读取数据
		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
		String readLine = bufferedReader.readLine();
		System.out.println(readLine);
		
		inputStream.close();
		outputStream.close();
		socket.close();
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值