tcp客户端编程(linux tcp编程)

      最后更新:2023-09-29 02:09

      采用tcp协议,使用socket编程,编写程序完成客户端发送消息给服务端,服务端接到消息后,再发

      服务端代码: /*server.c*/#include #include #include #include #include #include #include #include #define PORT4321#define BUFFER_SIZE 1024#define MAX_QUE_CONN_NM 5int main(){struct sockaddr_in server_sockaddr, client_sockaddr;int sin_size, recvbytes;int sockfd, client_fd;char buf[BUFFER_SIZE];/*建立socket连接*/if ((sockfd = socket(AF_INET,SOCK_STREAM,0))== -1){perror("socket");exit(1);}printf("Socket id = %dn",sockfd);/*设置sockaddr_in 结构体中相关参数*/server_sockaddr.sin_family = AF_INET;server_sockaddr.sin_port = htons(PORT);server_sockaddr.sin_addr.s_addr = INADDR_ANY;bzero(&(server_sockaddr.sin_zero), 8);int i = 1;/* 使得重复使用本地地址与套接字进行绑定 */setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));/*绑定函数bind*/if (bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr))== -1){perror("bind");exit(1);}printf("Bind success!n");/*调用listen函数*/if (listen(sockfd, MAX_QUE_CONN_NM) == -1){perror("listen");exit(1);}printf("Listening....n");/*调用accept函数,等待客户端的连接*/if ((client_fd = accept(sockfd, (struct sockaddr *)&client_sockaddr, &sin_size)) == -1){perror("accept");exit(1);}/*调用recv函数接收客户端的请求*/memset(buf , 0, sizeof(buf));if ((recvbytes = recv(client_fd, buf, BUFFER_SIZE, 0)) == -1){perror("recv");exit(1);}printf("Received a message: %sn", buf);if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1){perror("send");exit(1);}close(sockfd);exit(0);}客户端:/*client.c*/#include #include #include #include #include #include #include #include #include #define PORT4321#define BUFFER_SIZE 1024int main(int argc, char *argv[]){int sockfd, sendbytes;char buf[BUFFER_SIZE];struct hostent *host;struct sockaddr_in serv_addr;if(argc < 3){fprintf(stderr,"USAGE: ./client Hostname(or ip address) Textn");exit(1);}/*地址解析函数*/if ((host = gethostbyname(argv[1])) == NULL){perror("gethostbyname");exit(1);}memset(buf, 0, sizeof(buf));sprintf(buf, "%s", argv[2]);/*创建socket*/if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){perror("socket");exit(1);}/*设置sockaddr_in 结构体中相关参数*/serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(PORT);serv_addr.sin_addr = *((struct in_addr *)host->h_addr);bzero(&(serv_addr.sin_zero), 8);/*调用connect函数主动发起对服务器端的连接*/if(connect(sockfd,(struct sockaddr *)&serv_addr, sizeof(struct sockaddr))== -1){perror("connect");exit(1);}/*发送消息给服务器端*/if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1){perror("send");exit(1);}if ((recvbytes = recv(sockfd, buf, BUFFER_SIZE, 0)) == -1){perror("recv");exit(1);}close(sockfd);exit(0); }
      采用tcp协议,使用socket编程,编写程序完成客户端发送消息给服务端,服务端接到消息后,再发

      TCP网络编程有什么特点?

      TCP编程和各基本的编程没有多大区别,主要的区别在于其中使用函数全是操作系统提供的Tcp是一种面向连接的,可靠的字节流服务。(设有数据包编号与差错控制机制。)特点:由于网络的复杂性,传输信息时,数据包可能会丢失,差错控制中的确认机制在接收到数据包是发送确认信息,若是数据包丢失,则回发数据包编号,让对方重新发送;由于网络的复杂性,传输信息时有多种网络传送途径可以选择,数据包被接收的顺序与发送顺序不同,可以根据数据包的编号,将数据包重组。优点:网络连接是以点对点的形式,加上上述特点,保证了数据的安全性,数据包不会中途被劫。缺点:耗费资源很多补充:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
      主要的区别在于其中使用函数全是操作系统提供的,比如在windows系统中用的是微软的API。补充:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
      TCP编程其实各基本的编程没有多大区别,主要的区别在于其中使用函数全是操作系统提供的,比如在windows系统中用的是微软的API。推荐一本书《计算机网络》,其中将网络通信的原理讲得比较透彻。只要懂了基本的网络通信原理,唯一的难点就是对微软中关于网络通信的相关API的掌握, 这个就要多练习了。
      特点:由于网络的复杂性,传输信息时,数据包可能会丢失,差错控制中的确认机制在接收到数据包是发送确认信息,若是数据包丢失,则回发数据包编号,让对方重新发送;由于网络的复杂性,传输信息时有多种网络传送途径可以选择,数据包被接收的顺序与发送顺序不同,可以根据数据包的编号,将数据包重组。优点:网络连接是以点对点的形式,加上上述特点,保证了数据的安全性,数据包不会中TCP协议通讯流程
      TCP网络编程有什么特点?

      Python 之 Socket编程(TCP/UDP)

      socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。有效的端口号: 0~ 65535但是小于1024的端口号基本上都预留给了操作系统POSIX兼容系统(如Linux、Mac OS X等),在/etc/services文件中找到这些预留端口与的列表面向连接的通信提供序列化、可靠的和不重复的数据交付,而没有记录边界。意味着每条消息都可以拆分多个片段,并且每个消息片段都能到达目的地,然后将它们按顺序组合在一起,最后将完整的信息传递给等待的应用程序。实现方式(TCP):传输控制协议(TCP), 创建TCP必须使用SOCK_STREAM作为套接字类型因为这些套接字(AF_INET)的网络版本使用因特网协议(IP)来搜寻网络中的IP,所以整个系统通常结合这两种协议(TCP/IP)来进行网络间数据通信。数据报类型的套接字, 即在通信开始之前并不需要建议连接,当然也无法保证它的顺序性、可靠性或重复性实现方式(UDP)用户数据包协议(UDP), 创建UDP必须使用SOCK_DGRAM (datagram)作为套接字类型它也使用因特网来寻找网络中主机,所以是UDP和IP的组合名字UDP/IP注意点:1)TCP发送数据时,已建立好TCP连接,所以不需要指定地址。UDP是面向无连接的,每次发送要指定是发给谁。2)服务端与客户端不能直接发送列表,元组,字典。需要字符串化repr(data)。TCP的优点:可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。TCP的缺点:慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。什么时候应该使用TCP :当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输.UDP的优点:快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……UDP的缺点:不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。什么时候应该使用UDP:当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……
      Python 之 Socket编程(TCP/UDP)

      当使用tcp协议编程时,哪些问题是程序员考虑和处理的

      发送数据的格式和应用协议。一旦双方建立了TCP连接,连接中的任何一方都能向对方发送数据并接收对方发来的数据。发送数据时,程序员可以编写程序不断地将数据流写入TCP的发送缓冲区中,然后TCP自动从发送缓冲区中取出一定量的数据流写入TCP的发送缓冲区中,然后TCP自动从发送缓冲区中取出一定量的数据,将其组成TCP报文段逐个发送给IP层,再通过IP层发送出去。接收端从IP层收到TCP报文段后,将其暂时保存在接收缓冲区中,这时程序员就可以编写程序依次读取接收缓冲区中的数据,从而达到通信的目的。扩展资料利用TcpClient和TcpListener在同步方式下接收、发送数据及监听客户端连接时,在操作没有完成之前一直处于阻塞状态,这在接收、发送数据量不大或者操作用时较短的情况下是比较方便的。但是,对于那些完成时间可能较长(如传送大文件)的任务时,使用同步操作可能就会造成系统假死,这种情况下,最好的办法是使用异步操作。
      1、收发双方缓存数据长度不一致 2、长连接情况下的保活3、服务器处理多客户请求的处理,实时性要求 等等
      当使用tcp协议编程时,哪些问题是程序员考虑和处理的

      请问TCP网络编程有什么特点

      TCP网络编程的特点是: 1、由于网络的复杂性,传输信息时,数据包可能会丢失,差错控制中的确认机制在接收到数据包是发送确认信息,若是数据包丢失,则回发数据包编号,让对方重新发送;2、由于网络的复杂性,传输信息时有多种网络传送途径可以选择,数据包被接收的顺序与发送顺序不同,可以根据数据包的编号,将数据包重组。3、网络连接是以点对点的形式,加上上述特点,保证了数据的安全性,数据包不会中途被劫。 更多关于TCP网络编程有什么特点,进入:https://m.abcgonglue.com/ask/9271361614909232.html?zd查看更多内容
      请问TCP网络编程有什么特点

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类