请用最简洁的话回答这个问题:TCP和SOCKET什么关系

jinxfei 2009-12-15 09:47:31
今天上班时聊到的,大家怎么看,
简单、直观、准确。
...全文
1897 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
simplesmile 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 jinxfei 的回复:]

引用 20 楼 dajiadebeibei9 的回复:
socket是实现网络通信的工具
tcp是支持网络通信的协议
直观上讲没有什么联系 各干其事


没有联系?
[/Quote]
确实没有关系!
小赖赖 2011-11-18
  • 打赏
  • 举报
回复
socket是传送带,tcp是货物的规格
口天小屋 2011-11-18
  • 打赏
  • 举报
回复
谢谢各位,终于对socket有一定的了解了,想请问下各位想做个利用socket来接收GSM/GPRS网络中的数据应该用什么语言和环境啊,本人不是学计算机的所以现在一头的雾水
jwmwdxxxx 2009-12-19
  • 打赏
  • 举报
回复
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
  Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。

转自以下链接
http://hi.baidu.com/xiao1dian/blog/item/cd10744a4da7ba2009f7ef5e.html
Ostroff 2009-12-19
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 333sunshine 的回复:]
本人观点如下:
两个不是相同类型的东西。
socket是软件。
TCP是协议。

软件是拿来运行的,
协议是拿来遵守的,

两者的关系如下:SOCKET是一个产品制造商,创建的产品中有的可以符合TCP的标准,也有的可以符合UDP的标准。
[/Quote]UP
sean1203 2009-12-19
  • 打赏
  • 举报
回复
mark
huang0596 2009-12-19
  • 打赏
  • 举报
回复 1
TCP 是网络层,socket 是应用层调用网络层的接口
gloomyfish 2009-12-19
  • 打赏
  • 举报
回复
socket是OSI网络协议栈TCP/IP协议,提供给开发者的应用API:

socket一般工作在OSI的第四层,基于TCP/UDP
更底层一点raw socket可以在第三层工作 IP
更加底层的socket可以基于第二层(MAC)的协议上面工作

所以想到socket不要只是跟TCP扯上什么关系,很显然Java实现的socket只能基于第四层协议
也许这个就是在JVM之上的socket和tcp的关系吧
SambaGao 2009-12-19
  • 打赏
  • 举报
回复
socket(套接字)是一种抽象层,应用程序通过它来发送和接收数据,就像应用程序打开一个文件句柄,将数据读写到稳定的存储器上一样。使用socket可以将应用程序添加到网络中,并与处于同一个网络中的其他应用程序进行通信。一台计算机上的应用程序向socket写入的信息能够被另一台计算机上的另一个应用程序读取,反之依然。
不同的socket有不同的协议族。而tcp就是一种。

描述一个主机。应用程序。套接字抽象层。协议。端口号之间的逻辑关第。

出自<<java tcp/ip socket编程>>
Busing 2009-12-19
  • 打赏
  • 举报
回复
就像 c和java的关系 ,些java代码的时候 跟c没关系

但是没有c 就不会有java的出现
louisgarcia 2009-12-19
  • 打赏
  • 举报
回复
上层应用和底层协议
lovepay1413 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 zb309698998 的回复:]
看看人家说的,我在一楼很惭愧~~
[/Quote]
我没话说更惭愧。。。
三米 2009-12-18
  • 打赏
  • 举报
回复
看看人家说的,我在一楼很惭愧~~
333sunshine 2009-12-18
  • 打赏
  • 举报
回复
本人观点如下:
两个不是相同类型的东西。
socket是软件。
TCP是协议。

软件是拿来运行的,
协议是拿来遵守的,

两者的关系如下:SOCKET是一个产品制造商,创建的产品中有的可以符合TCP的标准,也有的可以符合UDP的标准。
Jales 2009-12-18
  • 打赏
  • 举报
回复
socket只是通信上一种通信方式, TCP是一种通信协议,我们所开发的程序大都都是基于TCP协议的socket通信,当然也可以使用其他协议来通过socket通信,比如 UDP, 更强悍的话,你可以自定义协议来通过socket进行网络通信。
smallbear923 2009-12-18
  • 打赏
  • 举报
回复
好好学习~别再惭愧了~~
hugogoo 2009-12-17
  • 打赏
  • 举报
回复
jf
APOLLO_TS 2009-12-17
  • 打赏
  • 举报
回复
socket称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。但是这个定义是因为开发WIN32编程才有的。或是别的系统编程。

X.25时代就有套接字概念,系统程序间通信都是套接字。

但是1983年TCP成为继NCP必须遵守的规则之后。网络出现大更新。

目前一说socket就是工作在应用层和网络层之间,TCP是工作在传输层的协议。

但是有一些系统简单高效,直接在数据链路层转发套接字,又叫原始套接字。跟所谓的TCP毫无关系。


fish_of_blog 2009-12-17
  • 打赏
  • 举报
回复
socket的实现是基于TCP协议。TCP就相当于一个接口,而socket相当于实现该接口的方法
wekui 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 crazylaa 的回复:]
TCP是网络协议
socket是实现协议的一种技术。

呵呵,讨论题,可以按自己的理解说话吧  :P
[/Quote]
up
加载更多回复(26)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧