码迷,mamicode.com
首页 > 其他好文 > 详细

UNIX 网络编程学习

时间:2017-11-19 16:33:54      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:vs code   [1]   网络   好好学习   nec   ror   获取   sock   etc   

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 网络编程学习

标签:vs code   [1]   网络   好好学习   nec   ror   获取   sock   etc   

原文地址:http://www.cnblogs.com/startnow/p/7860126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!