UNIX 网络编程学习

Posted code -ss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNIX 网络编程学习相关的知识,希望对你有一定的参考价值。

a.述

书买很久了,好好学习下.O(∩_∩)O  只写程序,原理什么的,先不写了. 

b.环境

deepin15.4.1 64位

vs code

gcc version 6.4.0 20170724 (Debian 6.4.0-2) 

虚拟机里跑的 没在物理机安装

 

 



1.2一个简单的时间获取程序

/**
 * TCP_getDayTime.c
 * 安装时间服务
 * sudo apt-get install xinetd -y
 *
 * 修改yes 为 no
 * sudo vi /etc/xinetd.d/daytime
 *
 * 重启服务
 * /etc/init.d/xinetd restart
 * 服务是否正确
 * nc 127.0.0.1 13
 * 
 * 
 * 编译 gcc TCP_getDayTime.c -o TCP_getDayTime
 * 运行 ./TCP_getDayTime 127.0.0.1
 * 
 */

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

/*错误处理*/
void err_exit(char * err){
	printf("\n---error at %s---- \n",err);
	exit(errno);
}


int main(int argc, char ** argv) {
	int sockfd, n;
	char recvline[1024 + 1];
	struct sockaddr_in servaddr;

	if (argc < 2) {
		err_exit("argc < 2");
	}
	
	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin_family = AF_INET;
	servaddr.sin_port = htons(13);
	if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) {
		err_exit("inet_pton()");
	}

	if ((sockfd = socket(AF_INET, SOCK_STREAM, 0) ) <0) {
		err_exit("socket()");
	}
	
	if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(struct sockaddr))<0) {
		err_exit("connect()");
	}

	while ((n = read(sockfd, recvline, 1024)) > 0) {
	
		recvline[n]=0;/* 0==‘0‘ */
		if(fputs(recvline, stdout)==EOF){
			err_exit("fputs()");
		}
		if(n<0){
			err_exit("n<0");
		}
	}

	return 0;
}

  

以上是关于UNIX 网络编程学习的主要内容,如果未能解决你的问题,请参考以下文章

在 UNIX(Linux 首选)上学习 C++ 编程的好书? [关闭]

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

学习编译并运行C代码

text Davivienda片段#davivienda #unix

sh unix片段

UNIX网络编程学习笔记2 需要用到的一些字节操纵和格式转换函数