socket编程(10)

close 与 shutdown 区别

  • close终止了数据传送的两个方向

    • close A 之后,既不能往A中写入数据,也不能从A读取数据。
    • A不能发送给B,B可以发给A,A发送RST表示连接重置,B收到RST之后,如果再次调用write,就会产生SIGPIPE信号
  • 可以将TCP看成全双工管道

  • shutdown可以可以有选择的终止某个方向数据传送或者2个方向

    ​ - shutdown:how=1关闭写的一端,可以保证对等方接收到EOF段,不理会引用计数shutdown(conn,SHUT_WR), 而不管其他进程是否已经打开了套接字。而close不能保证,知道套接字引用计数减为0时才发送。也就是说所有的进程都关闭了套接字。

进一步改进回射客户程序

  • Ctrl+c是强制中断程序的执行。

  • Ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态

  • Ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Socket编程是一种用于在网络上发送和接收数据的编程技术。它基于TCP/IP协议,允许计算机在网络上进行通信。 在Socket编程中,有两种通信方式:客户端和服务器端。客户端是一个程序,它连接到服务器并向其发送请求。服务器端是另一个程序,它接收客户端请求并提供相应的响应。 Socket编程可以使用多种编程语言实现,包括C、C++、Java和Python等。在Python中,Socket编程可以使用内置的socket库来实现。 下面是一个基本的Python Socket编程示例,它创建一个服务器,并等待客户端连接: ``` import socket # 创建一个TCP/IP socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定服务器地址和端口 server_address = ('localhost', 12345) server_socket.bind(server_address) # 开始监听客户端连接请求 server_socket.listen(1) # 等待客户端连接 print('等待客户端连接...') client_socket, client_address = server_socket.accept() # 接收客户端数据 data = client_socket.recv(1024) print('接收到数据:', data.decode('utf-8')) # 发送响应数据给客户端 response_data = 'Hello, client!' client_socket.sendall(response_data.encode('utf-8')) # 关闭客户端连接 client_socket.close() # 关闭服务器socket server_socket.close() ``` 这个示例创建一个基于TCP/IP的服务器,绑定到本地地址和端口,并等待客户端连接。一旦客户端连接成功,它将接收客户端发送的数据,发送响应数据,然后关闭客户端连接和服务器socket

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值