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();
		
	}

}

以下是一个简单的 Java Socket 编程模板,包括服务器和客户端的代码: 服务器端代码: ```java import java.net.*; import java.io.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(8888); } catch (IOException e) { System.err.println("Could not listen on port: 8888."); System.exit(1); } Socket clientSocket = null; try { System.out.println("Waiting for connection..."); clientSocket = serverSocket.accept(); System.out.println("Connection established with " + clientSocket.getInetAddress().getHostName()); } catch (IOException e) { System.err.println("Accept failed."); System.exit(1); } PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println("Received message: " + inputLine); out.println("Server received message: " + inputLine); } out.close(); in.close(); clientSocket.close(); serverSocket.close(); } } ``` 客户端代码: ```java import java.net.*; import java.io.*; public class Client { public static void main(String[] args) throws IOException { Socket socket = null; PrintWriter out = null; BufferedReader in = null; try { socket = new Socket("localhost", 8888); out = new PrintWriter(socket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Unknown host: localhost"); System.exit(1); } catch (IOException e) { System.err.println("Could not connect to localhost."); System.exit(1); } BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; while ((userInput = stdIn.readLine()) != null) { out.println(userInput); System.out.println("Server response: " + in.readLine()); } out.close(); in.close(); stdIn.close(); socket.close(); } } ``` 这个模板实现了一个简单的回显服务器,当客户端连接到服务器并发送消息时,服务器会将消息回显给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值