Linux下TCP/IP网络编程——结课考试知识总结
2016-06-01 15:21
483 查看
socket也被认为是文件的一种,因此在网络数据传输过程中自然也可以使用文件I/O的相关函数。
协议就是为了完成数据交换而做的约定。
PF_INET—-IPv4互联网协议
下列数据适合用那类套接字传输
a.演唱会现场直播的多媒体数据(SCOK_DGRAM)
b.某人压缩过的文本文件(SCOK_STREAM)
c.网上银行用户与银行之间的数据传递(SCOK_STREAM)
端口号就是在同一操作系统内为区分不同的套接字而设置的,由16位构成,可分配的端口号是0~65535,但1~1023时知名端口,一般分配给特定的应用程序。
TCP套接字和UDP套接字不会共用端口号,允许重复,但相同的套接字不允许端口重复。
数据传输目标地址同时包含IP地址和端口号。
客户端调用connect函数后,发生以下情况之一才会返回(完成函数的调用)
服务器端接受连接请求
发生断网等异常情况而中断连接请求
TCP
ceho_client.c
协议就是为了完成数据交换而做的约定。
PF_INET—-IPv4互联网协议
下列数据适合用那类套接字传输
a.演唱会现场直播的多媒体数据(SCOK_DGRAM)
b.某人压缩过的文本文件(SCOK_STREAM)
c.网上银行用户与银行之间的数据传递(SCOK_STREAM)
端口号就是在同一操作系统内为区分不同的套接字而设置的,由16位构成,可分配的端口号是0~65535,但1~1023时知名端口,一般分配给特定的应用程序。
TCP套接字和UDP套接字不会共用端口号,允许重复,但相同的套接字不允许端口重复。
数据传输目标地址同时包含IP地址和端口号。
客户端调用connect函数后,发生以下情况之一才会返回(完成函数的调用)
服务器端接受连接请求
发生断网等异常情况而中断连接请求
TCP
ceho_client.c
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #define BUF_SIZE 1024 void error_handling(char *message); int main(int argc,char *argv[]) { int sock; char message[BUF_SIZE]; int str_len; struct sockaddr_in serv_adr; if(argc!=3) { printf("Usage: %s <IP><PORT>\n",argv[0]); exit(1); } sock = socket(PF_INET,SOCK_STREAM,0); if(sock==-1) error_handling("socket() error"); memset(&serv_adr,0,sizeof(serv_adr)); serv_adr.sin_family = AF_INET; serv_adr.sin_addr.s_addr = inet_addr(argv[1]); serv_adr.sin_port = htons(argv[2]); if(connect(sock),(struct sockaddr*)&serv_adr,sizeof(serv_adr)) == -1) error_handling("connect() error!"); else puts("Connected......"); while(1) { fputs("Input message(Q to quit):",stdout); fgets(message,BUF_SIZE,stdin); if(!strcmp(message,"q\n") || !strcmp(message,"Q\n")) berak; write(sock,message,strlen(message)); str_len = read(sock,message,BUF_SIZE-1); message{str_len} = 0; printf("Message from server: %s",message); } close(sock); return 0; } void error_handling(char *message) { fputs(message,stderr); fputc('\n',stderr); exit(1); }
相关文章推荐
- java-模拟tomcat服务器
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户