大数据java篇——Socket编程

Socket:一个Socket由一个IP地址和一个端口号唯一确定 

ServerSocket:服务器端套接字,接收请求

TCP:传输控制协议,是可靠协议,必须先建立连接

UDP:用户数据报协议

Socket

java在包java.net中提供了两个类 Socket和ServerSocket,分别用来表示双向连接的客户端和服务端,其构造函数:

Socket(String host,int port);

Socket(String host,int port,boolean stream);

Socket(InetAddress address,int port);

Socket(InetAddress address,int port,boolean stream);

其中address,host和port分别是双向连接中另一方的IP地址,主机名和端口号,stream指明socket是流socket还是数据报socket。

在选择端口时,要选大于1023的数,因为0~1023是系统保留的端口号

package socketDemo;

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

public class ServerSocketDemo {

	public static void main(String[] args) {

		try {
			ServerSocket ss = new ServerSocket(1234);
			while (true) {
				Socket socket = ss.accept();
				InetAddress sa = socket.getInetAddress();
				System.out.println("sa.getHostAddress()" + ":" + sa.getHostAddress());
				System.out.println("sa.getHostName()" + ":" + sa.getHostName());
				System.out.println("sa.getAddress()" + ":" + sa.getAddress());
				System.out.println("socket.getPort()" + ":" + socket.getPort());
				System.out.println(sa.toString() + "连接成功了");
				System.out.println("正在接收");
			}

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
package socketDemo;

import java.net.Socket;

public class SocketDemo {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("localhost", 1234);
			System.out.println("socket");
		} catch (Exception e) {
			e.printStackTrace();
		}
		


	}

}

用Socket实现文本传输

package socketDemo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerSocketDemo {

	public static void main(String[] args) {

		try {
			ServerSocket ss = new ServerSocket(1234);
			while (true) {
				Socket socket = ss.accept();
				InputStream is = socket.getInputStream();
				OutputStream os = socket.getOutputStream();
				BufferedReader br = new BufferedReader(new InputStreamReader(is,"gbk"));
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os,"gbk"));
				String line = null;
				while((line = br.readLine()) != null){
					System.out.println("收到数据" + line);
					String send = "hello ," + line + "\r\n" ;
					bw.write(send);
					bw.flush();
					System.out.println("发送了" + send);
				}
				
				
			}

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
package socketDemo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class SocketDemo {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("localhost", 1234);
			InputStream is = socket.getInputStream();
			OutputStream os = socket.getOutputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(is,"gbk"));
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os,"gbk"));
			bw.write("abc\r\n");
			bw.flush();
			System.out.println(br.readLine());
			bw.close();
			
		}
		catch (Exception e) {
			e.printStackTrace();
		}

	}

}

猜你喜欢

转载自blog.csdn.net/sp_ur/article/details/81323717