23,121
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<unistd.h>//close()
#include<netinet/in.h>//struct sockaddr_in
#include<arpa/inet.h>//inet_ntoa
#include "pthread.h"
#define DEST_PORT 63333
#define DEST_IP_ADDRESS "192.168.2.100"
int g_skt = 0;
void zcPrintTime()
{
time_t lt; /*define a longint time varible*/
lt=time(NULL);/*system time and date*/
struct tm *ptm;
ptm = localtime(<);
printf("%04d-%02d-%02d %02d:%02d:%02d\n",
ptm->tm_year+1900, ptm->tm_mon+1, ptm->tm_mday,
ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
}
/*客户端的处理过程*/
void sendInfo(int s)
{
int send_num;
int iSend = 0;
zcPrintTime();
printf("begin send\n");
while(1)
{
char bufScanf[32] = {0};
scanf("%s",bufScanf);
iSend ++;
char send_buf[32] = {0};
sprintf(send_buf, "%d", iSend);
printf("%d will be sent.\n", iSend);
send_num = send(s,send_buf,1,0);
zcPrintTime();
printf("send_num : %d\n", send_num);
if (send_num <= 0)
{
perror("send");
exit(1);
}
else
{
printf("send sucess:%s\n",send_buf);
}
}
}
void* threadRecv(void *p)
{
int recv_num = 0;
printf ("<== threadRecv in\n");
printf("begin recv:\n");
while (1)
{
char recv_buf[1024];
recv_num = recv(g_skt,recv_buf, sizeof(recv_buf), 0);
zcPrintTime();
printf("recv_num : %d\n", recv_num);
if(recv_num <= 0)
{
perror("recv");
//exit(1);
break;
}
else
{
recv_buf[recv_num]='\0';
printf("recv sucess:%s\n",recv_buf);
}
}
printf ("<== threadRecv in\n");
pthread_exit(NULL);
}
int main(int argc,char *argv[])
{
struct sockaddr_in addr_serv;//服务器端地址
g_skt = socket(AF_INET,SOCK_STREAM,0);
if(g_skt < 0)
{
perror("sock");
exit(1);
}
else
{
printf("sock sucessful:\n");
}
memset(&addr_serv,0,sizeof(addr_serv));
addr_serv.sin_family = AF_INET;
addr_serv.sin_port = htons(DEST_PORT);
addr_serv.sin_addr.s_addr = inet_addr(DEST_IP_ADDRESS);
if( connect(g_skt,(struct sockaddr *)&addr_serv,sizeof(struct sockaddr)) < 0){
perror("connect");
printf("connect (%d)\n",errno);
exit(1);
}
else
{
printf("connect sucessful\n");
}
int iErr;
pthread_t thread;
iErr = pthread_create(
&thread,
NULL,
threadRecv,
NULL);
if(iErr != 0)
printf("线程 创建失败");
else
printf("线程 被创建\n");
sendInfo(g_skt);
close(g_skt);
}