Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >为什么客户端套接字以localhost作为参数?

为什么客户端套接字以localhost作为参数?
EN

Stack Overflow用户
提问于 2016-02-27 17:10:37
回答 3查看 1.9K关注 0票数 0

我学习套接字编程,书中的例子显示:

代码语言:javascript
代码运行次数:0
复制
// SimpleClient.java: A simple client program.
import java.net.*;
import java.io.*;
public class SimpleClient {
  public static void main(String args[]) throws IOException {
    // Open your connection to a server, at port 1254
    Socket s1 = new Socket(“localhost”,1254);
    // Get an input file handle from the socket and read the input
    InputStream s1In = s1.getInputStream();
    DataInputStream dis = new DataInputStream(s1In);
    String st = new String (dis.readUTF());
    System.out.println(st);
    // When done, just close the connection and exit
    dis.close();
    s1In.close();
    s1.close();
  }
}

我的问题是,在行新套接字(“localhost”,1254),为什么地址是本地主机,而不是服务器的IP地址?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-28 01:04:40

对于这个特定的程序,很难确切地说明原因。通常的原因是服务器甚至可能没有另一个IP地址。如果它是本地的,那么即使您根本没有NIC,也可以通过"localhost""127.0.0.1"访问它。

另一个可能的原因是安全。您的计算机可能有多个NIC,但服务器可能被配置为只侦听环回接口,因此只接受本地连接。如果它根本不打算用于外部,这通常是最好的做法,因为潜在的攻击者将有一个非常困难的连接通过一个接口,它甚至没有侦听!他们必须先以其他方式进入系统。

票数 1
EN

Stack Overflow用户

发布于 2016-02-27 17:21:45

您可以使用服务器名而不是"localhost“。

Socket client =新套接字(serverName,端口);

票数 -1
EN

Stack Overflow用户

发布于 2016-02-27 18:01:27

除非服务器和客户端在同一台主机上运行,否则不能使用localhost

如果它们确实运行在同一台主机上,则客户端应该使用的IP或主机名取决于服务器进程使用的是什么。如果要使服务器进程可用于网络,则通常将其设置为侦听所有网络接口上的连接。在这种情况下,客户机使用本地主机或外部IP地址并不重要,它可以以任何方式连接到服务器。

如果不希望其他主机能够访问服务器进程,则可以使其仅使用回送接口。这样,只有本地运行的客户端才能连接,他们唯一能做到的方法是使用localhost或回送IP地址。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35677503

复制
相关文章
【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )
Socket 套接字 是一种 进程之间的 通信机制 , 通过套接字可以在 不同的进程之间 进行数据交换 ;
韩曙亮
2023/10/11
4950
【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )
套接字
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/88673990
zy010101
2019/05/25
1.3K0
Socket(套接字)
TCP/IP只是一个协议栈,Socket的出现只是可以更方便的使用TCP/IP协议栈而已,其对TCP/IP进行了抽象,形成了几个最基本的函数接口。比如create,listen,accept,connect,read和write等等。
老马的编程之旅
2022/06/22
1.3K0
套接字选项
选项影响套接字操作,如 封包路由,OOB数据传输,获取和设置套接字选项分别是 getsockopt  setsockopt 用法如下: int getsockopt(SOCKET s,int level,int optname,char* optval,int* optlen); int setsockopt(SOCKET s,int level,int optname,char* optval,int* optlen); 每个协议层套接字的选项有不同的级别: 应用层:SOL_SOCKET 传输层:IPPR
用户1154259
2018/01/17
1.2K0
Python套接字
Python只支持AF_UNIX(基于文件)、AF_NETLINK(使用标准的BSD套接字接口进行用户级别和内核级别代码之间的IPC)、AF_TIPC(透明的进程间通信)、AF_INET(基于网络)家族。
用户4845306
2019/03/14
1.6K0
Java套接字
  本文补充一下Java关于套接字方面的内容,因为其应用相对比较简单,所以下面介绍两个程序实例。
云海谷天
2022/08/09
7680
Java套接字
16(套接字)
套接字描述符在Unix系统中是用文件描述符实现的。事实上,许多处理文件描述符函数(read和write)都可以处理文件描述符 要创建一个套接字,可以调用socket函数
提莫队长
2019/02/21
9820
Socket为什么被翻译成"套接字"
第一次接触"套接字"这个词是在大学里《计算机网络技术》这门课程,英文是"Socket",中译就是:插座、插孔。我很难将Sokect和套接字联系到一起,我也不知道是谁翻译出来的,导致我当时一度难以理解什么是套接字。都怪我国最早那批计算机程序员都是电气工程师,套接是一个工程用词,一般来描述套结式管道。这里正好符合套接字其基层特性(包含端口信息的一个套接口,接受指定信息)
Karl Du
2023/10/20
7120
Socket为什么被翻译成"套接字"
套接字Socket编程
Socket,原意插座、插口。写软件程序时,可以想象成一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以通信前,双方都要建立一个Socket。
JavaEdge
2021/12/07
1.3K0
套接字Socket编程
Socket 套接字协议
A network socket is an internal endpoint for sending or receiving data within a node on a computer network. Concretely, it is a representation of this endpoint in networking software (protocol stack), such as an entry in a table (listing communication protocol, destination, status, etc.), and is a form of system resource.
vanguard
2020/03/18
1.5K0
套接字随笔1
accept函数接受一个客户端请求后会返回一个新的SOCKFD值,当有不同的客户端同时有不同请求时,会返回不同的SOCKFD的值。这个不同的值和建立SOCKET 时生成的SOCKFD还是不同的。服务器与客户端之间的通信就是在这些不同的SOCKFD上进行的。
随心助手
2022/11/30
5500
IPC|网络套接字
为了访问由UDP提供的服务,你需要像以前一样使用套接字和close系统调用,但你需要用两个
heidsoft
2022/04/18
1.1K0
linux 网络套接字
在内核分析网络分组时,底层协议的数据将传输到跟高的层。而发送数据的时候顺序是相反的。每一层都是通过加(首部+净荷)传向跟底层,直至最终发送。
233333
2019/05/25
2.8K0
套接字Socket编程
Socket,原意插座、插口。写软件程序时,可以想象成一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以通信前,双方都要建立一个Socket。
JavaEdge
2021/10/18
1.4K0
Socket - 套接字编程
目录 Socket - 套接字编程 Socket 通信流程图 Socket模块 socket()方法 部分参数 bind()方法 listen()方法 accept()方法 accept()函数返回值:sock、addr connect() 方法 close()方法 服务端客户端对比 简单案例 简易通信循环 优化通信循环 黏包问题 Struct 模块 规定报头 解决黏包问题 上传文件案例 UDP通信 Socket - 套接字编程 只要涉及到远程数据交互必须要操作OSI七层模型,那么每层都需要相应的程序
HammerZe
2022/03/25
1K0
Socket - 套接字编程
Python与套接字
服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客 户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时 客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应 数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束
星陨1357
2023/03/14
2.4K0
Python与套接字
【网络】TCP套接字创建服务客户端与守护进程
上面的是单进程版本,要想实现多进程,我们只需要改造TcpServer.hpp即可:
平凡的人1
2023/10/15
3440
【网络】TCP套接字创建服务客户端与守护进程
accept()返回的套接字绑定哪个端口 新旧套接字的联系
摘要:对于服务器编程中最重要的一步等待并接受客户的连接,那么这一步在编程中如何完成,accept函数就是完成这一步的。它从内核中取出已经建立的客户连接,然后把这个已经建立的连接返回给用户程序,此时用户程序就可以与自己的客户进行点到点的通信了。
bear_fish
2018/09/20
3.9K1
python UDP套接字通信
UDPserver.py 1 import socket 2 #导入套接字模块 3 4 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 5 # - socket.AF_INET:IPV4 6 # - socket.STREAM:TCP 7 # - socket.DGRAM:UDP 8 9 s.bind(('',25555)) 10 #绑定套接字有效地址和端口 11 #''空位任何地址 本地的127.0.0.1 和局域网还有自己真实
py3study
2020/01/19
1.5K0
什么是socket套接字?
互联网已经深入我们生活的方方面面,重要性不言而喻。上世纪70年代互联网刚发明的时候,就确定了客户端-服务器模型,这个编程模型一直沿用到现在都没有变过,我们在电脑上打开一个网站,在微信上聊天,打开一个app本质上都是客户端和服务器的连接和交互。
zhanyd
2022/05/16
5860
什么是socket套接字?

相似问题

TCP套接字客户端将输出缓慢写入localhost

129

不是"localhost“套接字网络示例

15

如何使用客户端套接字作为服务器套接字python

11

Python套接字客户端Post参数

10

客户端套接字作为侦听器?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文