socket简单应用服务端代码(原创)tcp c/s
来源:互联网 发布:mac怎么免费翻墙 编辑:程序博客网 时间:2024/06/03 15:02
server.c:
#include
#include
#include //perror错误输出
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PORT 8999
#define MAXSIZE (8 * 4096)
#define MAXSIZE (8 * 4096)
int main(int argc, char *argv[])
{
int sockfd, peer, len;
struct sockaddr_in serv_addr, clnt_addr;
char recvmsg[MAXSIZE], sendmsg[MAXSIZE];
sockfd = socket(AF_INET, SOCK_STREAM, 0);//创建socket
if (sockfd < 0) {
perror("socket error");
return -1;
}
/* 配置socket */
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(serv_addr.sin_zero), 8);
/* 绑定socket */
if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) < 0) {
perror("bind err");
return -1;
}
/* 主动socket转为被动监听socket */
if (listen(sockfd, 1) < 0) {
perror("listen error");
return -1;
}
/* 循环监听 */
len = sizeof(clnt_addr);
while (1) {
printf("begin to accept\n");
peer = accept(sockfd, (struct sockaddr *)&clnt_addr, &len);/* 接收连接 */
if (peer < 0) {
perror("Server: accept failed.\n");
continue;
}
{
int sockfd, peer, len;
struct sockaddr_in serv_addr, clnt_addr;
char recvmsg[MAXSIZE], sendmsg[MAXSIZE];
sockfd = socket(AF_INET, SOCK_STREAM, 0);//创建socket
if (sockfd < 0) {
perror("socket error");
return -1;
}
/* 配置socket */
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(serv_addr.sin_zero), 8);
/* 绑定socket */
if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) < 0) {
perror("bind err");
return -1;
}
/* 主动socket转为被动监听socket */
if (listen(sockfd, 1) < 0) {
perror("listen error");
return -1;
}
/* 循环监听 */
len = sizeof(clnt_addr);
while (1) {
printf("begin to accept\n");
peer = accept(sockfd, (struct sockaddr *)&clnt_addr, &len);/* 接收连接 */
if (peer < 0) {
perror("Server: accept failed.\n");
continue;
}
memset(recvmsg, 0, MAXSIZE);
memset(sendmsg, 0, MAXSIZE);
if (read(peer, recvmsg, sizeof(recvmsg)) < 0) {
perror("recv err");
break;
}
memset(sendmsg, 0, MAXSIZE);
if (read(peer, recvmsg, sizeof(recvmsg)) < 0) {
perror("recv err");
break;
}
printf("client: %s\n", recvmsg);
if (!strcmp(recvmsg, "quit")) {
printf("close a connection\n");
break;
}
if (!strcmp(recvmsg, "quit")) {
printf("close a connection\n");
break;
}
strcpy(sendmsg, "I get your req");
write(peer, sendmsg, strlen(sendmsg) + 1);
write(peer, sendmsg, strlen(sendmsg) + 1);
close(peer);
}
}
return 0;
}
}
0
上一篇:socket编程的同步、异步与阻塞、非阻塞示例详解之二
下一篇:Another MySQL daemon already running with the same unix socket
相关热门文章
- 关于SSI
- IP Sec VPN与NAT破镜重圆
- JS模拟鼠标自动点击
- UT2.0正式版下载
- tomcat6.0配置(含配置视频下载...
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- socket简单应用服务端代码(原创)tcp c/s
- Socket tcp服务端 代码示例
- 【C++】Winsock套接字编程,简单的TCP/IP通信代码(客户端、服务端)
- c++ Windows Socket实现最简单的C/S网络通信(TCP)
- socket(TCP)服务端程序
- Socket(Tcp)通信服务端
- Tcp C/S socket编程
- Socket原理及C/S简单代码实现
- SOCKET TCP的简单应用
- TCP简单C/S通信
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
- 基于socket的简单tcp客户端与服务端程序
- Socket TCP 协议实现服务端和客户端的简单通信
- 用Socket建立简单的C/S结构的TCP/IP服务
- 基于tcp的c/s模型的一个简单的socket实现
- win32汇编实现一个简单的TCP服务端程序(WinSock的简单认知应用)
- c语言实现socket服务端/客户端通过tcp传送文件
- c/s练习——多个客户端上传图片到服务端(tcp)
- 什么是互联网金融
- asterisk -r 出现Unable to connect to remote asterisk的解决方法
- socket编程的同步、异步与阻塞、非阻塞示例详解之一
- socket编程的同步、异步与阻塞、非阻塞示例详解之二
- 别怕,手把手带你撕、拉、扯下SpringMVC的外衣
- socket简单应用服务端代码(原创)tcp c/s
- Linux文件权限
- 里氏七大原则
- Another MySQL daemon already running with the same unix socket
- SO_KEEPALIVE选项
- 查看程序线程数 文件打开数
- windows 7系统安装与配置Tomcat服务器环境
- POJ 1015 Jury Compromise
- 面试与反面试的一些问题
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
塑料焊接设备
模塑料
塑料柜
塑料环
定做塑料箱
塑料米
废旧塑料颗粒
塑料种类
塑料排水板厂家
一次性塑料杯机器
塑料产品设计
塑料碗厂家
塑料槽
塑料pe
塑料颗粒价格行情
塑料酒瓶
塑料圈
透明塑料桌布
塑料试剂瓶
塑料分类
塑料线
塑料排水带厂家
塑料雨水检查井
塑料编织袋公司
工业塑料筐
塑料护栏厂家
塑料分选机
塑料颗粒造粒机
塑料刷
塑料排水板价格
尼龙工程塑料
塑料包装设备
塑料开瓶器
塑料电磁阀
塑料pet
塑料复合包装袋
废旧塑料加工
塑料收纳箱批发
塑料油
工程塑料试模
塑料跑道厂家