TCP(建立连接通道)编程的客户端的开发步骤

TCP(建立连接通道)编程的客户端的开发步骤
1)创建客户端的Socket对象
 
  Socket:就是客户端的Socket
  构造方法
public Socket(InetAddress address, int port)
  public Socket(String host, int port):创建客户端套接字对象,并且指定端口号和ip文本形式
 2)获取通道内的输出流对象
 3)给服务器端写数据 
 4)释放资源
 java.net.ConnectException: Connection refused: connect 连接被拒绝

 不要先运行客户端,客户端的连接需要服务器监听到才能连接

public static void main(String[] args) throws Exception {
		//1)创建客户端的Socket对象
		//public Socket(String host, int port)
		Socket s = new Socket("192.168.10.1", 12306) ;
		//2)获取通道内的输出流对象
//		public OutputStream getOutputStream():获取套接字 的输出流
		OutputStream out = s.getOutputStream() ;
		//3)给服务器端写数据 过去
		out.write("hello,Tcp,我来了".getBytes());
		
		//释放资源
		s.close();
	}
}
服务端的开发步骤:
  1)创建服务器端的Socket对象
2)监听客户端的连接(阻塞方法)
  3)获取通道内的输入流
  4)读取数据,显示控制台
5)释放资源
 

ava.net.BindException: Address already in use: JVM_Bind  地址被绑定,因为已经有服务器在监听客户端连接

public class ServerDemo {
	
	public static void main(String[] args) throws Exception {
//		1)创建服务器端的Socket对象
		//	public ServerSocket(int port) throws IOException创建绑定到特定端口的服务器套接字
		ServerSocket ss = new ServerSocket(12306) ;
		
		
		//2)监听客户端的连接(阻塞方法)
//		public Socket accept():   throws IOException侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞
		Socket s = ss.accept() ;
//	 	3)获取通道内的输入流
	//	InputStream getInputStream() 
		
		InputStream in = s.getInputStream() ;
//	 	4)读取数据,显示控制台
		//获取ip文本形式'
//		public InetAddress getInetAddress()
		String ip = s.getInetAddress().getHostAddress() ;
		byte[] bys = new byte[1024] ;
		int len = in.read(bys) ;
		String data = new String(bys, 0, len) ;
		System.out.println("from" +ip +"data is :"+data);
//	 	5)释放资源
		s.close();
//		ss.close(); 服务端可以不关闭
		
	}
}

改进。

public class ClientDemo {
	
	public static void main(String[] args) throws  IOException {
		
		//创建客户端的Socket对象
		Socket s = new Socket("192.168.10.1",10011) ;
		
		//获取通道内的流 发哦少年宫数据
		OutputStream out = s.getOutputStream() ;
		out.write("今天天气不错,元芳,你怎么看?".getBytes());
		
		
		//接收服务器端的反馈
		//客户端获取通道内的输入流,读取反馈的数
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Qt中,可以使用QTcpSocket和QTcpServer类来实现TCP连接多个客户。下面是一种实现方法: 首先,创建一个QTcpServer对象来监听客户连接: ```cpp QTcpServer server; server.listen(QHostAddress::Any, 1234); // 监听本地口1234 ``` 然后,在有新客户连接时,使用QTcpServer的newConnection信号槽将其连接到一个新的QTcpSocket对象: ```cpp connect(&server, &QTcpServer::newConnection, [=]() { QTcpSocket* socket = server.nextPendingConnection(); // 将socket添加到一个容器中,以便管理多个客户连接 }); ``` 接下来,可以使用QTcpSocket对象与客户进行通信。可以在readyRead信号槽中处理接收到的数据,以及在disconnected信号槽中处理客户断开连接的情况: ```cpp connect(socket, &QTcpSocket::readyRead, [=]() { QByteArray data = socket->readAll(); // 处理接收到的数据 }); connect(socket, &QTcpSocket::disconnected, [=]() { // 处理客户断开连接的情况 socket->deleteLater(); // 清理资源 }); ``` 需要注意的是,在进行通信的过程中,可以根据具体需求设置超时时间、发送和接收数据等各种细节的处理。 另外,为了管理多个客户连接,可以将QTcpSocket对象添加到一个容器中,例如使用QList或QVector等容器类。 以上是大致的实现思路,具体的细节和错误处理可以根据项目需求进行调整。 ### 回答2: Qt是一款跨平台的开发框架,拥有丰富的网络编程功能。要实现TCP连接多个客户,可以采用Qt的QTcpServer和QTcpSocket类。 首先,创建一个QTcpServer对象,并调用其listen()函数,指定服务的监听地址和口号。然后,在新的客户连接到服务器时,QTcpServer会触发newConnection()信号。我们可以通过连接这个信号来处理新的客户连接。 处理新连接的槽函数中,我们可以创建一个QTcpSocket对象,用于与客户进行通信。通过调用QTcpServer的nextPendingConnection()函数,可以获取到与客户连接的QTcpSocket对象。可以为每个客户连接创建一个新的QTcpSocket对象。 为了处理多个客户连接,我们可以使用一个QList或QVector来存储所有的QTcpSocket对象。在处理新连接的槽函数中,将新的QTcpSocket对象添加到列表中。这样我们就可以通过遍历列表,对每个客户进行操作。 当服务从某个客户接收到数据时,可以通过connected()信号与readyRead()信号来读取数据。当服务要发送数据给客户时,可以调用QTcpSocket的write()函数。 如果某个客户断开连接,QTcpSocket会触发disconnected()信号,我们可以在该信号的槽函数中将对应的QTcpSocket对象从列表中移除,并释放内存。 为了确保多个客户可以同时进行连接和通信,可以使用多线程或者多线程框架(如QtConcurrent)来实现。每个客户连接可以在一个单独的线程中进行处理。 总的来说,Qt提供了丰富的功能来处理TCP连接多个客户。我们可以通过QTcpServer和QTcpSocket类来实现服务与多个客户之间的通信,使用容器来存储多个客户连接对象,并使用多线程来处理多个客户的并发连接。 ### 回答3: 在Qt中实现TCP连接多个客户,我们可以使用Qt的网络模块来处理。 首先,我们需要创建一个TcpServer对象来接受客户连接请求和处理数据传输。 然后,我们可以使用QObject的connect方法将TcpServer的newConnection信号与自定义的槽方法连接起来。在槽方法中,我们可以获取到新连接的SocketDescriptor,并创建一个TcpSocket对象来处理与客户的通信。 在TcpSocket对象中,我们可以使用QObject的connect方法将TcpSocket的readyRead信号连接到自定义的槽方法上。在槽方法中,我们可以获取到客户发送的数据,并进行相应的处理。 此外,我们还可以使用QObject的connect方法将TcpSocket的disconnected信号连接到自定义的槽方法上,用于处理客户断开连接的情况。 在main函数中,我们可以创建多个TcpSocket对象,并连接到同一个TcpServer对象上,从而实现多个客户同时连接的功能。 最后,我们可以通过TcpSocket的write方法向客户发送数据,也可以通过TcpSocket的close方法主动关闭与客户连接。 通过以上步骤,我们就可以实现Qt中TCP连接多个客户的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值