TCP包服务器接受程序
2015-09-13 15:48
661 查看
//功能:客户端发送TCP包,此程序接受到,将字母转换为大写,在发送到客户端
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int port = 8000;
int main()
{
struct sockaddr_in sin,cliaddr;
struct sockaddr_in pin;
int sock_descriptor;
int temp_sock_descriptor;
int address_size;
char buf[16384];
int i, len;
sock_descriptor = socket(AF_INET, SOCK_STREAM, 0);//TCP
// sock_descriptor = socket(AF_INET, SOCK_DGRAM, 0);//UDP
if (sock_descriptor == -1) {
perror("call to socket");
exit(1);
}
bzero(&sin, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;//自动填入本机IP地址
sin.sin_port = htons(port);
if (bind(sock_descriptor, (struct sockaddr *)&sin, sizeof(sin)) == -1) {
perror("call to bind");
exit(1);
}
if (listen(sock_descriptor, 20) == -1) {
perror("call to listen");
exit(1);
}
printf("Accepting connections ...\n");
int addr_len=sizeof(struct sockaddr_in);
while(1)
{
temp_sock_descriptor = accept(sock_descriptor, (struct sockaddr *)&pin,&address_size);
if (temp_sock_descriptor == -1) {
perror("call to accept");
exit(1);
}
if (recv(temp_sock_descriptor, buf, 16384, 0) == -1) {
perror("call to recv");
exit(1);
}
printf("received from client:%s\n", buf);
// for this server example, we just convert the
// characters to upper case:
len = strlen(buf);
for (i=0; i<len; i++) buf[i] = toupper(buf[i]);
//toupper将字符c转换为大写英文字母
if (send(temp_sock_descriptor, buf, len, 0) == -1) {
perror("call to send");
exit(1);
}
close(temp_sock_descriptor);
}
}
来源于http://blog.sina.com.cn/s/blog_79d1978a0100q4p7.html
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int port = 8000;
int main()
{
struct sockaddr_in sin,cliaddr;
struct sockaddr_in pin;
int sock_descriptor;
int temp_sock_descriptor;
int address_size;
char buf[16384];
int i, len;
sock_descriptor = socket(AF_INET, SOCK_STREAM, 0);//TCP
// sock_descriptor = socket(AF_INET, SOCK_DGRAM, 0);//UDP
if (sock_descriptor == -1) {
perror("call to socket");
exit(1);
}
bzero(&sin, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;//自动填入本机IP地址
sin.sin_port = htons(port);
if (bind(sock_descriptor, (struct sockaddr *)&sin, sizeof(sin)) == -1) {
perror("call to bind");
exit(1);
}
if (listen(sock_descriptor, 20) == -1) {
perror("call to listen");
exit(1);
}
printf("Accepting connections ...\n");
int addr_len=sizeof(struct sockaddr_in);
while(1)
{
temp_sock_descriptor = accept(sock_descriptor, (struct sockaddr *)&pin,&address_size);
if (temp_sock_descriptor == -1) {
perror("call to accept");
exit(1);
}
if (recv(temp_sock_descriptor, buf, 16384, 0) == -1) {
perror("call to recv");
exit(1);
}
printf("received from client:%s\n", buf);
// for this server example, we just convert the
// characters to upper case:
len = strlen(buf);
for (i=0; i<len; i++) buf[i] = toupper(buf[i]);
//toupper将字符c转换为大写英文字母
if (send(temp_sock_descriptor, buf, len, 0) == -1) {
perror("call to send");
exit(1);
}
close(temp_sock_descriptor);
}
}
来源于http://blog.sina.com.cn/s/blog_79d1978a0100q4p7.html
相关文章推荐
- hdu 5444 长春区域赛网络赛 1008 Elven Postman(模拟)
- Muduo 网络库c++
- hdu 5446 长春区域赛网络赛1010 Unknown Treasure(lucas定理+中国剩余定理+移位乘法)
- hdu 5441 长春区域赛网络赛 1005 Travel(并查集)
- 2015长春网络赛 ACM/ICPC Asia Regional Changchun Online
- 《第一行代码》读书笔记(十)----网络编程
- 使用HttpClient4提交包含上传文件的表单
- Java网络编程之获取IP地址:InetAddress类
- HTTP状态码详解
- 代码篇C#网络编程之UDP进程通信
- 代码篇C#网络编程之tcp异步客户端
- 代码篇C#网络编程之tcp同步客户端
- 代码篇C#网络编程之回调
- 代码篇C#网络编程之局域网聊天
- 5、Android网络编程
- windows 故障转移群集
- 公钥加密体系和https
- 蘑菇街的IM 网络层
- 网络协议
- 网络连接之——HttpClient(doGet和doPost)