我照着孙鑫的书上写了一个简单的网络程序。一个服务端和客户端1.服务端将套接字设为监听状态后,准备接受客户端的请求,但它并不知道请求会来自哪里。而客户端必须知道服务端的IP和端口才能发送请求。是这样的吗?
   
    为什么服务端接收到客户端请求后就能向客户端发消息了?它是怎么知道客户端IP和端口的?我在程序中看客户端向服务端发送请求时,消息中并没有说明自己的IP和端口啊。还是有某种机制?2.如果在程序中打开端口,程序结束后,端口会自动关闭吗?还是要自己显示关闭?端口会不会带来安全隐患?
 

解决方案 »

  1.   

    1.服务端将套接字设为监听状态后,准备接受客户端的请求,但它并不知道请求会来自哪里。而客户端必须知道服务端的IP和端口才能发送请求。是这样的吗?是
        
      为什么服务端接收到客户端请求后就能向客户端发消息了?它是怎么知道客户端IP和端口的?我在程序中看客户端向服务端发送请求时,消息中并没有说明自己的IP和端口啊。还是有某种机制?连接的时候就有客户端信息了2.如果在程序中打开端口,程序结束后,端口会自动关闭吗?还是要自己显示关闭?端口会不会带来安全隐患?最好要自己关
      

  2.   

    1.是的,客户端没有服务器的Ip和端口,那它怎么连接到要连接的服务器呢?
    2.socket是双向的,A发送数据的时候(send),B同时可以接收(recv),反之也可以。一方连接了另外一方则它们就可以相互通信。  服务端进行accept时,定义了一个 struct sockaddr_in clientaddr;结构体,clientaddr中就保存了客户端的ip和端口。3.你自己建立的端口自己关闭,这也是一个编程的习惯。不关闭可能会有问题。