本文主要是介绍TCP-client客户端代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一版
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h> // 包含套接字函数库
#include <netinet/in.h> // 包含AF_INET相关结构
#include <arpa/inet.h> // 包含AF_INET相关操作函数
#include <unistd.h>
#include <stdlib.h> // exit()
#define PORT 8085
int main(int argc, char *argv[])
{
int sock_fd;
int len;
struct sockaddr_in addr;
int newsock_fd;
char * buf = "come on";
int len2;
char rebuf[40];
sock_fd = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字
addr.sin_family = AF_INET; // 表示TCP/IP协议簇
// 为什么是本机IP填入到客户端的套接字,客户端需要IP嘛?客户端不需要绑定bind,程序自动分配位占用的端口
// ---》应该是远端主机的IP地址和端口号,测试是同一台主机,所以填INADDR_ANY
//addr.sin_addr.s_addr = htonl(INADDR_ANY); // 32位值从主机字节序转为网络字节序
addr.sin_addr.s_addr = inet_addr("10.3.119.141");
addr.sin_port = htons(PORT); // 需要连接的端口号
len = sizeof(addr); // 套接字的长度
// 参数:函数返回的套接字描述符,含远端主机IP和port的指针,远端地址结构的长度
newsock_fd = connect(sock_fd, (struct sockaddr *)&addr, len); // 建立连接
if (newsock_fd == -1) // 调用失败返回-1
{
perror("connect error.\n");
exit(1);
}
else
{
printf("connect OK.\n");
}
len2 = sizeof(buf);
// 参数:socket返回的套接字,发送数据的指针,数据程度,默认为0
send(sock_fd, buf, len2, 0);
printf("111");
sleep(5);
printf("222");
// 参数:socket返回的套接字,缓冲区指针,缓冲区长度,默认0
recv(sock_fd, rebuf, 256, 0); // 256?
rebuf[sizeof(rebuf) + 1] = '\0'; // 字符串末尾,手动设为0
printf("receive message:\n%s\n.", rebuf);
close(sock_fd);
return 0;
}
第二版
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char * argv[])
{
struct sockaddr_in client_socket;
int client_fd, client_connect;
/* 创建套接字结构体 */
client_fd = socket(AF_INET, SOCK_STREAM, 0);
if (client_fd == -1)
{
perror("socket error.\n");
exit(1);
}
else
{
printf("socket successfully.\n");
}
client_socket.sin_family = AF_INET;
client_socket.sin_addr.s_addr = inet_addr("10.3.119.141");
client_socket.sin_port = htons(8080);
bzero(&(client_socket.sin_zero), 8);
/* 请求建立连接 */
client_connect = connect(client_fd, (struct sockaddr *)&client_socket, sizeof(client_socket));
if (client_connect == -1)
{
perror("socket error.\n");
exit(1);
}
else
{
printf("connect successfully.\n");
}
/* 接受数据 */
char buf[20];
memset(buf, '0', sizeof(buf));
recv(client_fd, buf, sizeof(buf), 0);
printf("MSG:%s", buf);
/* 发送数据 */
for (int i = 0; i < 10; i++)
{
char str[] = "hello.\n";
send(client_fd, str, sizeof(str), 0);
sleep(1);
}
/* 关闭客户端 */
close(client_fd);
return 0;
}
这篇关于TCP-client客户端代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!