socket编程api学习二客户端的编程
2017-08-20 18:48
281 查看
代码
#include <unistd.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <signal.h> #include <arpa/inet.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { int sockfd = 0; sockfd = socket(PF_INET, SOCK_STREAM, 0); if (sockfd == -1) { perror("fun socket\n"); exit(0); } struct sockaddr_in srvaddr; srvaddr.sin_family = AF_INET; srvaddr.sin_port = htons(8001); srvaddr.sin_addr.s_addr = inet_addr("192.168.6.249"); //127.0.0.1 //srvaddr.sin_addr.s_addr = inet_addr(INADDR_ANY); //绑定本机的任意一个地址 if ( connect(sockfd, (struct sockaddr*) (&srvaddr), sizeof(srvaddr)) < 0) { perror("fun socket\n"); exit(0); } char revbuf[1024] = {0};//接受数组 char sendbuf[1024] = {0};//发送数组 while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL) { //向服务写数据 write(sockfd, sendbuf, strlen(sendbuf)); //服务器端回发信息 //从服务器读数据 read(sockfd, revbuf, sizeof(revbuf)); fputs(revbuf, stdout); //从服务器收到数据,打印屏幕 memset(revbuf, 0, sizeof(revbuf)); memset(sendbuf, 0, sizeof(sendbuf)); } close(sockfd); return 0; }
客户端和服务器不一样的地方他没有listen,accept,listen代码有把socket变成被动的接受放,accept我的理解就是一个客户端对应的一个连接id这样我们做服务器开发的时候便可以知道我们的客户端的状态。当然查看状态的可以直接用netstat -na | grep 端口号查看链接的状态。希望对大家的学习有所帮助。
相关文章推荐
- iOS从零开始学习socket编程——HTTP1.0客户端
- 【网络编程】之二、socket API学习
- 【网络编程】之二、socket API学习
- python 网络编程基础学习笔记(1)-网络客户端-socket
- 【网络编程】之二、socket API学习
- Linux socket编程学习初步(3)--客户端向服务器请求文件
- unix环境编程学习笔记---------套接字------socket------客户端
- 粤嵌-Android学习之Socket编程 手机为服务器 模拟器为客户端
- 学习笔记(10) : Socket 编程典型代码积累
- unix学习笔记-----王保明学习笔记-----socket编程进阶---tcpip的11中状态
- Socket编程实践(3) --Socket API
- Linux网络编程基础API--socket地址API
- 【python学习】socket编程
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Select模型(多路复用), 实用Socket通信模板。
- HBase 学习之一 <<HBase使用客户端API动态创建Hbase数据表并在Hbase下导出执行>>
- Socket编程原理(个人学习ing)
- Socket高级编程 多客户端
- Java SE学习笔记:网络编程,Socket,B/S
- socket编程-客户端向服务器发送字符串,传文件
- Python学习之网络编程Socket