FreeBSD上实现TCP网络编程

作者:佚名 上传时间:2023-05-24 运行软件:C语言 软件版本:FreeBSD 12.1 版权申诉

示例展示在FreeBSD系统上使用TCP网络编程,包括创建socket、bind、listen、accept、read、write等功能的实现过程。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define SERV_PORT 9877
#define MAXLINE   4096

int main(int argc, char **argv)
{
    int                 listenfd, connfd;
    socklen_t           clilen;
    char                buf[MAXLINE];
    struct sockaddr_in  servaddr, cliaddr;

    if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
        fprintf(stderr, "socket error: %s\n", strerror(errno));
        exit(1);
    }

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family      = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port        = htons(SERV_PORT);

    if (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) == -1) {
        fprintf(stderr, "bind error: %s\n", strerror(errno));
        exit(1);
    }

    if (listen(listenfd, 1024) == -1) {
        fprintf(stderr, "listen error: %s\n", strerror(errno));
        exit(1);
    }

    while (1) {
        clilen = sizeof(cliaddr);
        if ((connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &clilen)) == -1 ) {
            fprintf(stderr, "accept error: %s\n", strerror(errno));
            continue;
        }

        printf("connection from %s, port %d\n",
               inet_ntop(AF_INET, &cliaddr.sin_addr, buf, sizeof(buf)),
               ntohs(cliaddr.sin_port));

        while (1) {
            ssize_t n = read(connfd, buf, MAXLINE);
            if (n < 0) {
                fprintf(stderr, "read error: %s\n", strerror(errno));
                break;
            } else if (n == 0) {
                printf("client closed connection\n");
                break;
            }
            buf[n] = '\0';
            ssize_t nwritten = write(connfd, buf, strlen(buf));
            if (nwritten < 0) {
                fprintf(stderr, "write error: %s\n", strerror(errno));
                break;
            } else if (nwritten != n) {
                printf("short write (%ld/%ld)\n", nwritten, n);
            }
        }

        close(connfd);
    }
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
FreeBSD实现TCP网络编程
示例展示在FreeBSD系统上使用TCP网络编程,包括创建socket、bind、listen、accept、read、write等功能的实现过程。#include <stdio.h>
FreeBSD 12.1
C语言
2023-05-24 12:43
FreeBSDTCP/IP网络编程实例
本示例代码演示了在FreeBSD操作系统上进行TCP/IP网络编程的实现方式和解决方案。通过这些示例代码,开发人员可以了解如何在FreeBSD上使用套接字接口进行网络编程,实现TCP服务器和客户端的通
FreeBSD 12.2
C语言
2023-10-18 15:48
MFC实现TCP网络编程
在因特网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的运输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提
RAR
0B
2019-05-16 16:03
基于网络编程实现tcp
基于网络编程实现tcp
RAR
0B
2018-12-26 05:37
FreeBSD使用TCP Wrapper实现网络安全
使用TCP Wrapper实现对来自指定IP地址和主机名的远程访问进行限制和过滤,提高网络安全性。#include <tcpd.h>#include <syslog.h>
FreeBSD 12.2-RELEASE
TCP Wrapper
2023-04-22 15:16
Java网络编程T TCP实现TCP函数
T/TCP实现:TCP函数10.1概述8410.2tcp_newtcpcb函数8410.3tcp_rtlookup函数8510.4tcp_gettaocache函数8610.5重传超时间隔的计算861
pdf文档
0B
2019-09-07 15:43
TCP实现聊天Socket网络编程
// Client.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "Cl
H
0B
2019-03-08 09:23
TCP_IP网络编程实现
TCP IP详解 网络编程实战,非常经典的一本书籍,要求了解基本的TCP/IP基础知识。
PDF
0B
2019-02-27 10:27
mfc实现tcp udp网络编程
网络课老师让做的小程序,用mfc实现udp和tcp的简单网络程序,有服务端和客户端
RAR
0B
2019-07-28 17:22
Java网络编程T TCP实现TCP用户请求
T/TCP实现:TCP用户请求12.1概述12012.2PRU_CONNECT请求12012.3tcp_connect函数12012.4PRU_SEND和PRU_SEND_EOF请求12412.5tc
pdf文档
0B
2019-07-13 10:25