玩一下linux网络编程之TCP程序

        Windows网络编程和linux网络编程我都玩, 之前的网络编程博文主要是基于Windows的, 后来一些朋友说博文中很少linux网络编程, 好吧, 姑且写一篇来玩一下。 要说明的是, linux才是网络编程的始祖, Windows不过是借鉴和改造而已。 对程序员来讲, 虽然两种环境下的网络编程有很多细微差别, 但还是有很多相通之处。

        不必纠结, 开始。 服务端程序为:

#include<sys/socket.h>
#include<netinet/in.h>

#include <stdio.h>
#include <string.h>

int main()
{
	// 创建用于监听的socket
	int sockSrv = socket(AF_INET, SOCK_STREAM, 0);

	// 本地地址信息
	struct sockaddr_in addrSrv;
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_addr.s_addr = INADDR_ANY; 
	addrSrv.sin_port = htons(8888);

	// socket与本地地址绑定
	bind(sockSrv, (const struct sockaddr *)&addrSrv, sizeof(struct sockaddr_in));

	// 设置socket为监听状态
	listen(sockSrv, 5);

	struct sockaddr_in addrClient;
	int len = sizeof(struct sockaddr_in);

	// 等待接受客户端来连接, sockConn是用来与客户端通信的socket(请注意区分用于监听的addrSrv和用于通信的sockConn这两个socket)
	int sockConn = accept(sockSrv, (struct sockaddr *)&addrClient, &len);
	
	 // 将客户端的IP地址保存下来, 并把数据返回客户端
	char szSendBuf[100] = {0};
	snprintf(szSendBuf, sizeof(szSendBuf), "hello %s, hello client.", inet_ntoa(addrClient.sin_addr));
	send(sockConn, szSendBuf, strlen(szSendBuf) + 1, 0); 

	getchar(); // 卡住
	
	close(sockConn);
	close(sockSrv);
	
	return 0;
}
        编译, 无error无warning, 启动它。


        再来看客户端程序:

#include<sys/socket.h>
#include<netinet/in.h>

#include <stdio.h>

int main()
{
        int sockClient = socket(AF_INET, SOCK_STREAM, 0);

        struct sockaddr_in addrSrv;
        addrSrv.sin_addr.s_addr = inet_addr("127.0.0.1");
        addrSrv.sin_family = AF_INET;
        addrSrv.sin_port = htons(8888);
        connect(sockClient, ( const struct sockaddr *)&addrSrv, sizeof(struct sockaddr_in));

        char szRecvBuf[100] = {0};
        recv(sockClient, szRecvBuf, sizeof(szRecvBuf) - 1, 0);
        printf("%s\n", szRecvBuf);

        getchar();

        close(sockClient);

        return 0;
}
        编译, 无error无warning, 启动它。客户端的结果为:

[taoge@localhost ~]$ gcc client.c 
[taoge@localhost ~]$ ./a.out 
hello 127.0.0.1, hello client.


        几行代码实战胜过千言万语的啰嗦, OK,  就这样。 



你可能感兴趣的:(玩一下linux网络编程之TCP程序)