test
来源:互联网 发布:维多利亚的秘密 知乎 编辑:程序博客网 时间:2024/06/05 21:21
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<string.h>
int main(int argv,const char*arg[])
{
int req_sock=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in sock_in;
sock_in.sin_family=AF_INET;
sock_in.sin_port= htons(atoi(arg[2]));
sock_in.sin_addr.s_addr=inet_addr(arg[1]);
socklen_t len=sizeof(sock_in);
connect(req_sock,(struct sockaddr*)&sock_in,len);
char buf[1024];
memset(buf,0,1024);
while(1)
{
ssize_t s=read(0,buf,sizeof(buf));
write(req_sock,buf,sizeof(buf));
if(s<0)
{
perror("write");
exit(1);
}
s=read(req_sock,buf,sizeof(buf));
if(s>0)
{
buf[s]=0;
if(strcmp(buf,"quit")==0)break;
printf("server say:%s\n",buf);
fflush(stdout);
}
}
return 0;
close(req_sock);
}
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<string.h>
#include <pthread.h>
int startup(const char*ip,const char* port)
{
int sock=-1;
if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
struct sockaddr_in sock_addr;
socklen_t len=sizeof(sock_addr);
sock_addr.sin_family = AF_INET;
sock_addr.sin_port= htons(atoi(port));
sock_addr.sin_addr.s_addr= inet_addr(ip);
if((bind(sock,(const struct sockaddr * )&sock_addr,len))<0)
{
perror("bind");
exit(2);
}
if((listen(sock,0))<0){
perror("listen");
exit(3);
}
return sock;
}
void usesage(const char *p)
{
printf("correct : %s ip port",p);
}
void* Accept(void * arg)
{
int answer_sock=(int)arg;
char buf[1024];
memset(buf,0,1024);
ssize_t s;
while(1)
{
if((s=read(answer_sock,buf,sizeof(buf)))>0)
{
if((s=read(answer_sock,buf,sizeof(buf)))>0)
{
buf[s]=0;
printf("cilent %s",buf);
printf("please Enter:");
fflush(stdout);
read(0,buf,sizeof(buf));
answer_sock=(int)arg;
write(answer_sock,buf,sizeof(buf));
}
else if(s==0)
{
printf("read eof cilent quit\n");
break;
}
else
{
perror("read");
pthread_exit((void*)1);
}
}
close(answer_sock);
return (void*)1;
}
int main(int argvs,const char*arg[])
{
if(argvs!=3)
{
usesage(arg[0]);
exit(4);
}
int listen=startup(arg[1],arg[2]);
struct sockaddr_in server;
socklen_t len=sizeof(struct sockaddr_in);
while(1)
{
int answer_sock=accept(listen,(struct sockaddr *)&server,&len);
printf(" yeah cilent success!\n");
pthread_t tid;
pthread_create(&tid,NULL,Accept,(void*)answer_sock);
pthread_detach(tid);
}
close(listen);
return 0;
}
阅读全文
0 0
- test
- test
- test
- test
- test
- test
- test
- Test
- test
- Test
- test
- test
- test
- test
- test
- test
- test
- Test
- Redis-数据库管理
- 方法(二)
- 孪生数(因数之和)
- Android Studio在导入moudle后出现layout布局文件无法显示
- 股票涨跌预测方法之一:下载股票数据
- test
- Windows access Linux
- 操作系统安全防范措施
- 实验DG Far Sync的搭建过程
- 常见问题
- 使用DFS计算连通区域个数
- jQuery之插件开发--jQuery.fn.extend()
- unique_ptr
- 根据公众号得到公众号二维码