简单socket服务器客户端
来源:互联网 发布:男士服装搭配软件 编辑:程序博客网 时间:2024/05/22 06:49
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#define SERVPORT 8088
#define SERVER
#ifdef SERVER
int main(void) {
int sockfd, client_sockfd;
struct sockaddr_in tsock_addr, tclient_addr;
memset(&tsock_addr, 0x0, sizeof(structsockaddr_in));
tsock_addr.sin_port = htons(SERVPORT);
tsock_addr.sin_addr.s_addr = INADDR_ANY;
tsock_addr.sin_family = AF_INET;
if(-1 == (sockfd = socket(AF_INET, SOCK_STREAM, 0))){
perror("socket create error:");
return -1;
}
if(-1 == bind(sockfd, (structsockaddr*)&tsock_addr, sizeof(structsockaddr))){
perror("bind error:");
close(sockfd);
return -1;
}
if(-1 == listen(sockfd, 10)){
perror("listen error");
close(sockfd);
return -1;
}
printf("server listening...\n");
while(1){
unsigned lsize = (sizeof(struct sockaddr));
if(-1 == (client_sockfd = accept(sockfd, (struct sockaddr*)&tclient_addr, &lsize))){
perror("accept error:");
close(sockfd);
return -1;
}
char *psRet = inet_ntoa(tclient_addr.sin_addr);
printf("received a connection from %s \n", psRet);
int bytes;
char sBuf[1024] = {0};
if(-1 == (bytes = recv(client_sockfd, sBuf, 1024, 0))){
perror("recv error:");
close(sockfd);
return -1;;
}
printf("%s", sBuf);
signal(SIGCHLD, SIG_IGN);
pid_t pid = fork();
if(0 == pid){
char *psBuf = (char *)calloc(1, 1024);
strncpy(psBuf, "connect successfully\n", 1024);
if(-1 == send(client_sockfd, psBuf, strlen(psBuf) + 1,0)){
perror("send error");
}
close(client_sockfd);
free(psBuf);
close(sockfd);
exit(0);
}
close(client_sockfd);
}
return EXIT_SUCCESS;
}
#else
#include <netdb.h>
int main()
{
//these four lines are used for testing herror
if(NULL == gethostbyname("localhost")){
herror("get host error"); //not perror, but herror
return -1;
}
int sockfd;
struct sockaddr_in tsock_addr;
memset(&tsock_addr, 0x0, sizeof(structsockaddr_in));
tsock_addr.sin_port = htons(SERVPORT);
tsock_addr.sin_addr.s_addr = INADDR_ANY;
tsock_addr.sin_family = AF_INET;
if(-1 == (sockfd = socket(AF_INET, SOCK_STREAM, 0))){
perror("socket create error:");
return -1;
}
if(0 != connect(sockfd, (struct sockaddr*)&tsock_addr, sizeof(struct sockaddr))){
perror("connect error:");
close(sockfd);
return -1;
}
char *psBuf = (char *)calloc(1, 1024);
printf("please input:\n");
fgets(psBuf, 1024, stdin);
if(-1 == send(sockfd, psBuf, strlen(psBuf) + 1, 0)){
perror("send error");
}
free(psBuf);
char sBuf[1024] = {0};
int bytes;
if(-1 == (bytes = recv(sockfd, sBuf, 1024, 0))){
perror("recv error:");
close(sockfd);
return -1;;
}
printf("%s\n", sBuf);
close(sockfd);
return 0;
}
#endif
- 简单socket服务器客户端
- 简单socket编程,服务器、客户端
- python简单的socket 服务器和客户端
- 简单Socket实现客户端和服务器连接
- Socket 简单实现服务器和客户端
- Python socket编写简单服务器,客户端
- 简单的socket 服务器/客户端 程序
- MFC Socket简单服务器与客户端源码
- MFC Socket简单服务器与客户端源码
- unity3D-----------socket客户端、服务器(简单)
- 简单的python socket服务器和客户端
- python socket简单tcp服务器客户端
- TCP SOCKET服务器|客户端简单实现
- socket编程:简单TCP服务器/客户端编程
- socket编程:简单UDP服务器/客户端编程
- 简单实现python socket 服务器客户端
- php简单socket服务器客户端代码实例
- [Unity]简单的socket客户端和服务器
- daemon
- Semaphores
- 内存映射文件mmap demo
- 文件锁File Locking示例
- Beej's Quick Guide to GDB
- 简单socket服务器客户端
- hdu 3905 Sleeping
- 使用事件驱动模型实现高效稳定的网…
- linux下mysql扩展,自定义函数实现(…
- 系统信号表格和一些资料
- 数据机构快速排序之c语言实现
- 线性插值原理
- epoll监听pipe,fork后父进程写给…
- System V 信号量操作,进程间通信(…