java Socket TCP

javaSocket TCP服务器端建立步骤:

1.首先创建一个服务端口;

2.这个端口等待客户端的连接;socket.accept()这个函数会在接受到连接之前阻塞当前线程(处于监听连接的状态);

3.有连接后处理此次连接对象

4.结束处理时关闭连接的socket对象;

备注:为了服务程序能一直使用应该把监听写在死循环里面;

下面是具体代码1

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

public class Receive {
	/** 服务启动函数 */
	public static void start(){
		ServerSocket serversocket = null;
		Receive receive = new Receive();
		try{
			serversocket = new ServerSocket(receive.port);//首先创建一个服务端口
			System.out.println("服务器端口号" + receive.port + "已启动....");
			while(true){//这里建立死循环是让服务程序一直处于监听状态
				try{
					Socket socket = serversocket.accept();//等待客户端的连接
					Thread serverthread = new ServerThread(socket);//连接之后建立新的线程单独处理此次连接
					serverthread.setPriority(4);//设置该线程的优先级
					serverthread.start();//线程启动
				}catch(IOException e){
					e.printStackTrace();//实际开发的时候这些异常应该打印到日志文件中
				}
			}
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(serversocket != null){
				try {
					serversocket.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	private final int 	port    = 8001;
	public static int personcount = 0;

	public static void main(String[] args){
		Receive.start();
	}
}

javaSocket TCP服务器客户端建立步骤:

1.首先创建一个socket

2.调用socket的connect函数连接对应的服务器

3.连接成功后处理此次连接

4.结束处理时关闭连接的socket对象;

public class Client {
	private int addr;//服务器地址
	private int port;//服务器端口
	private Socket socket = null;//连接成功后返回的socket对象
	private OutputStream outputstream = null;//从socket中获取的输出流。。。。
	private //这里还可以添加很多你想用的变量
	//连接服务器
	public boolean getconnect(int connTime,int readOrWriteTime)//传入连接超时时间和数据传输超时时间
		boolean ret = false;
		try{
			socket = new Socket();//建立一个Socket
			socket.connect(new InetSocketAddress(addr,port), connTime);//连接,设置连接请求超时时间
			socket.setSoTimeout(readOrWriteTime);//设置读操作超时时间
		}catch(IOException e){
			e.printStackTrace();
		}
		finally{
			try {
				if(socket != null)socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		ret = true;return ret;
	}
        //发送字节报文
	private void sendto(byte[] message) throws IOException{
		OutputStream outs = socket.getOutputStream();
		outs.write(message);
	}
	//接收字节报文
	private byte[] receive(int byteLenght)throws IOException{
		String ret = new String();
		InputStream  is	=socket.getInputStream(); 
		byte b[]=new byte[byteLenght]; 
		is.read(b);
		return b;
	}
//在其他类里面调用你的这些函数,完成逻辑处理
//这里就分享一点点的思想希望对看的人有所启发,尽量让代码活跃起来,写到这里楼主打算去写个这样完整的功能类,之后再把他发表上来.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值