Linux C socket 封装
/**************************************************************************
* Linux C socket 封装
* 声明:
* 同样的代码当然没必要敲很多遍了,一遍就够了,封起来,什么时候要用,
* 什么时候就来这里拿。
*
* 2015-7-4 晴 深圳 南山平山村 曾剑锋
*************************************************************************/ \\\\\\\\-*- 目录 -*-////////
| 一、cat zengjf_socket.h
| 二、cat zengjf_socket.c
\\\\\\\\\\\\\\////////////// 一、cat zengjf_socket.h
#ifndef __ZENGJF_SOCKET_H__
#define __ZENGJF_SOCKET_H__ #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h> #define handle_error(msg) { perror(msg); exit(EXIT_FAILURE); } /**
* 客户端socket
* 参数说明:
* 1.ip:服务器ip地址,点分十进制的ip字符串
* 2.port:服务器端口号,字串的形式
* 3.srvaddr:连接到服务器端的sockaddr_in
*/
int socketClient(char* ip, char* port, struct sockaddr_in* srvaddr);
/**
* 服务器端socket
* 参数说明:
* 1.port:监听端口号,是字串的形式
* 2.srvaddr:服务器的sockaddr_in
*
*
* 服务器端socket默认能够同时监听30个连接
*/
int socketServer(char* port, struct sockaddr_in* srvaddr); #endif // __ZENGJF_SOCKET_H__ 二、cat zengjf_socket.c
#include "zengjf_socket.h" int socketClient(char* ip, char* port, struct sockaddr_in* srvaddr){ int sfd; // create a socket
if ((sfd = socket(AF_INET, SOCK_STREAM, )) == -){
handle_error("can not create socketClient.");
} // set the server socket address
srvaddr->sin_family = AF_INET;
srvaddr->sin_port = htons(atoi(port));
inet_aton(ip, &(srvaddr->sin_addr)); // connect
if (connect(sfd, (struct sockaddr *)srvaddr, sizeof(struct sockaddr)) == -){
handle_error("can not connect to server.");
} return sfd;
} int socketServer(char* port, struct sockaddr_in* srvaddr){ int srv_fd;
//the default listen count
int listenCount = ; // create a socket
if ((srv_fd = socket(AF_INET, SOCK_STREAM, )) == -){
handle_error("can not create socketServer.");
} //reuse the socket address
int sockopt = ;
setsockopt(srv_fd, SOL_SOCKET, SO_REUSEADDR, &sockopt, sizeof(sockopt)); // set the socket address
srvaddr->sin_family = AF_INET;
srvaddr->sin_port = htons(atoi(port));
srvaddr->sin_addr.s_addr = htonl(INADDR_ANY); // bind the socket with the address
if (bind(srv_fd, (struct sockaddr *)srvaddr, sizeof(struct sockaddr)) == -){
handle_error("can not bind the address.");
} // listening
// default was 30
if (listen(srv_fd, listenCount) == -){
handle_error("can not listening to the port.");
} return srv_fd;
}
Linux C socket 封装的更多相关文章
- 提高 Linux 上 socket 性能
http://www.cnblogs.com/luxf/archive/2010/06/13/1757662.html 基于Linux的Socket网络编程的性能优化 1 引言 随着In ...
- ACE - 代码层次及Socket封装
原文出自http://www.cnblogs.com/binchen-china,禁止转载. ACE源码约10万行,是c++中非常大的一个网络编程代码库,包含了网络编程的边边角角.在实际使用时,并不是 ...
- linux c socket programming
原文:linux c socket programming http://54min.com/post/http-client-examples-using-c.html 好文章 PPT http:/ ...
- C# .NET Socket封装
Socket封装,支持多客户端,支持大文件传输,支持多线程并发,对较大的Socket包进行分块传输. 封装所要达到的效果,是可以像下面这样使用Socket和服务端通信,调用服务端的方法,让你在使用So ...
- linux中socket的理解
对linux中socket的理解 一.socket 一般来说socket有一个别名也叫做套接字. socket起源于Unix,都可以用“打开open –> 读写write/read –> ...
- linux 客户端 Socket 非阻塞connect编程
开发测试环境:虚拟机CentOS,windows网络调试助手 非阻塞模式有3种用途 1.三次握手同时做其他的处理.connect要花一个往返时间完成,从几毫秒的局域网到几百 ...
- Linux内核socket优化项
Linux内核socket优化项 vi /etc/sysctl.confnet.core.netdev_max_backlog = 30000 每个网络接口接收数据包的速率比内核处理这些包的速率快时 ...
- LInux下socket编程学习笔记
1.socket套接字: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模 ...
- 跨平台的游戏客户端Socket封装,调整
原文链接:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019359.html 头文件: #pragma once #ifdef WIN32 ...
随机推荐
- 新开发项目Jacoco代码覆盖率
一般只有新的项目才会去用JaCoCo工具看一下代码覆盖率, 一来看看测试有没有漏的测试用例 二来看看开发有没有留下冗余的代码 新开发项目Jacoco代码覆盖率后端接口打成jar包,进行启动 #exec ...
- 日志_测试代码_Qt532
1. int LogFile(QString &_str) { QDateTime datetime = QDateTime::currentDateTime();//获取系统现在的时间 QS ...
- IntelliJ IDE 开发Java GUI 入门
j主要对java 的GUI相关知识进行简单的介绍和总结,整个博客按照创建一个java GUI的顺序进行介绍,期间穿插讲解用到的java Swing的布局.控件等相关知识.本博客所进行的讲解及工程的创建 ...
- Codeforces 447D - DZY Loves Modification
447D - DZY Loves Modification 思路:将行和列分开考虑.用优先队列,计算出行操作i次的幸福值r[i],再计算出列操作i次的幸福值c[i].然后将行取i次操作和列取k-i次操 ...
- C#中一个简单的匹配16进制颜色的正则测试
using System; using System.Text.RegularExpressions; namespace Test { class Program { //匹配16进制颜色代码的正则 ...
- bzoj 1267 Kth Number I (点分治,堆)
超级钢琴的树上版本, 类似做法即可, 只不过区间转为dfs序了, 用点分求一下, 复杂度$O(nlog^2n)$ #include <iostream> #include <algo ...
- HDU-4849 Wow! Such City! (单源最短路)
Problem Description Doge, tired of being a popular image on internet, is considering moving to anoth ...
- HDU-1226 超级密码 (BFS+剪枝)
Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息:密 码是一个C进 ...
- VS2013/2015 html 设计视图窗口
- Leetcode 96
class Solution { public: int numTrees(int n) { ]; dp[] = ; dp[] = ; dp[] = ; ;i <= n;i++){ ; ;j & ...