java socket套接字编程

java socket套接字编程

	为了完成毕业设计学习了java套接字编程

1,socket服务端编写
在服务端上,需要新建一个套接字,监听是否有客户端进行连接,连接客户端,关闭服务端

首先你要知道有一个叫做 serversocket的类,你得实例话一个这个类的对象

ServerSocket server =new ServerSocket(8000);

我创建了server 这个对象,并使用了参数为端口号的构造函数初始化了这个sercer对象

这个对象完成了创建套接字和监听的工作

接下来就是acceot()函数,用于接收客户端的连接,这个直接调用server对象里的方法即可

fd=server.accept();   //调用完了之后返回一个socket类型的对象,这里我先前定义过了Socket fd

接下了就 可以调用 fd的方法进行读写
fd.read()		fd.write()
代码如下
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;


public class Test {
    
    
	public static void main(String[] args) {
    
    
		
		try{
    
    
			ServerSocket server = new ServerSocket(8880);
			if(server != null){
    
    
				System.out.println("创建服务端成功");
			}
			Socket lianJie = server.accept();
			System.out.println("有客户端接入");
			
			//获取输入通道,用来读取数据
			InputStream in = lianJie.getInputStream();
			
			byte[] mes = new byte[128];
			
		
			int len;
			len = in.read(mes);
			//len为in.read()函数读到数据的个数
			System.out.println(new String(mes,0,len));
			//新构造一个字符串把byte mes[]中的数据从0开始到len读到mes,返回mes字符串
			System.out.println("服务端接受数据完毕");
			

			
			System.out.println("请输入要发送给客户端的消息:");
			
			OutputStream out = lianJie.getOutputStream();
			out.write("自定义输入".getBytes());
			//因为out.write()函数要求byte型数据这里用调用字符串的方法getByte()把字符串转成byte类型
			System.out.println("服务器发送数据完毕");
			
			in.close();
			out.close();
			lianJie.close();
			server.close();
				
		}catch(Exception e){
    
    
			System.out.println("创建服务器失败");
			e.printStackTrace();
		}
		
	}
}

2 scoke客户端编写

客户端只要发送连接请求就行了,实例化一个Socket对象就可以完成请求连接的功能

Socket client = new Socket(" ip地址",“端口号”)

这里我调用了两个参数的Socket的构造函数,配置了这个套接字的信息,客户端的读写直接调用client 的方法就好了

代码如下

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;


public class TestClient {
    
    
	public static void main(String[] args) {
    
    
		
		Scanner sc = new Scanner(System.in);
		String mes;
		try {
    
    
			Socket client = new Socket("192.168.43.52",8880);
			
			OutputStream out = client.getOutputStream();
			
			System.out.println("请输入要发送的数据:");
			//mes = sc.next();
			mes = sc.nextLine();
			out.write(mes.getBytes());  //C字符串就是数组,但java的字符串是类,数组是数组
			System.out.println("客户端发送完毕"+mes);
			
			InputStream in = client.getInputStream();
			int len;
			byte[] readMes = new byte[128];
			len = in.read(readMes);
			System.out.println("len="+len);
			if(len != -1){
    
    
				System.out.println("读到数据:"+new String(readMes,0,len));
			}else{
    
    
				System.out.println("数据错误");
			}
			
			out.close();
			in.close();
			client.close();
			
			
		} catch (Exception e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

おすすめ

転載: blog.csdn.net/qq_42014326/article/details/102024181