cs
复制代码
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h> /* See NOTES */
#include <unistd.h>
#include <time.h>
typedef struct sockaddr *(SA);
int main(int argc, char **argv)
{
//监听套接字
int listfd = socket(AF_INET, SOCK_STREAM, 0);
if (-1 == listfd)
{
perror("scoket error\n");
return 1;
}
// man 7 ip
struct sockaddr_in ser, cli;
bzero(&ser, sizeof(ser));
bzero(&cli, sizeof(cli));
ser.sin_family = AF_INET;
ser.sin_port = htons(50000);
// 127.0.0.1 表示自己的ip地址 。 本机自己收发
// ser.sin_addr.s_addr = inet_addr()"127.0.0.1");
ser.sin_addr.s_addr = INADDR_ANY;
int ret = bind(listfd, (SA)&ser, sizeof(ser));
if (-1 == ret)
{
perror("bind");
return 1;
}
// 第二参数不是可以链接客户端的个数
//三次握手的排队数
listen(listfd, 3);
socklen_t len = sizeof(cli);
//通信套接字
int conn = accept(listfd, (SA)&cli, &len);
if (-1 == conn)
{
perror("accept");
return 1;
}
time_t tm;
while (1)
{
char buf[1024]={0};
int ret = recv(conn,buf,sizeof(buf),0);
if(ret<=0)
{
break;
}
time(&tm);
sprintf(buf,"%s %s",buf,ctime(&tm));
send(conn,buf,strlen(buf),0);
}
close(listfd);
close(conn);
return 0;
}
cs
复制代码
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h> /* See NOTES */
#include <time.h>
#include <unistd.h>
typedef struct sockaddr *(SA);
int main(int argc, char **argv)
{
int conn = socket(AF_INET, SOCK_STREAM, 0);
if (-1 == conn)
{
perror("socket");
return 1;
}
struct sockaddr_in ser;
bzero(&ser, sizeof(ser));
ser.sin_family = AF_INET;
ser.sin_port = htons(50000);
// 127.0.0.1 表示自己的ip地址 。 本机自己收发
// ser.sin_addr.s_addr = inet_addr()"127.0.0.1");
ser.sin_addr.s_addr = INADDR_ANY;
int ret = connect(conn, (SA)&ser, sizeof(ser));
if (-1 == ret)
{
perror("connect error\n");
return 1;
}
int i = 10;
while (i--)
{
char buf[1024]="hello,this is tcp test";
send(conn,buf,strlen(buf),0);
bzero(buf,sizeof(buf));
recv(conn,buf,sizeof(buf),0);
printf("from ser:%s\n",buf);
sleep(1);
}
close(conn);
return 0;
}