java socket类实现网络通信

java socket 类分为:ServerSocket、Socket,即服务器端和客户端。这两个类都属于,java.net包中。

ServerSocket的用法:

1、首先创建ServerSocket对象,并绑定一个端口号(端口号取值范围0-65535,0-1023是系统保留端口,建议设置1023之后的,大点更好,注意不能使用已经占用的端口)。

2、通过ServerSocket的accept()方法侦听绑定的端口,此方法会返回一个Socket对象

3、接下来通过Socket对象获取OutputStream、InputStream输出输入流。

4、使用输入输出流读取或返回数据到客户端,分别使用流的read()、write()方法读取和输出,注意字符串必须转换为byte数组输出,读取类似。

5、详细使用请参考,java API

Socket使用示例:

实现了,服务器端和客户端的连接,可在两台电脑测试,一台也可以。注意是两个进程,首相启动服务器,再启动客户端。测试请在命令提示符中,分别打开两个命令提示符,一个运行服务器,另一个启动客户端。本例子实现的客户端输入一段字符串,服务器反转顺序后,返回到客户端。

代码如下:

import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Test10 {

	public static void main(String[] args) {
		if(args.length>0){   //通过判断main方法的参数分别启动不同的进程
			Test10.server();   //有参数启动服务器
		}else{
			Test10.client();   //无参数启动客户端
		}
	}
	
	public static void server() {   //服务器端进程
		try {
			ServerSocket server = new ServerSocket(6669);  //端口绑定为6669
			Socket socket = server.accept();   //侦测端口
			OutputStream os = socket.getOutputStream();  //通过socket的方法获取输入输出流
			InputStream is = socket.getInputStream();
			byte[] buf = new byte[100];
			int len = is.read(buf);    //读取客户端到byte数组
			String str=new String(buf, 0, len);
			char[] temp=str.toCharArray();  //字符串转化为char数组
			str="";
			for(int i=0;i


你可能感兴趣的:(java原创,java,Socket,网络通信)