2015华为软赛(二)——socket链接
来源:互联网 发布:智能电网技术知乎 编辑:程序博客网 时间:2024/05/11 17:46
点滴记录总结,一天一打鸡血。
2015年5月华为组织了一次软件精英挑战赛,赛题是德州扑克手牌AI~
环境及测试说明:http://pan.baidu.com/s/1dD2dL0P
关于socket通信之前写过一篇文章:http://blog.csdn.net/lh648365878/article/details/45716681
client端的主要过程如下:
- 创建socket,返回socket描述符sockfd
- 设置属性,可以设置端口为reuse模式
- 使用bind对客户端ip、端口进行绑定
- 将服务器端的ip和端口绑定(视赛制需求,一般不需要)
- 连接
WriteLog函数用于服务端记录输出,方便调试~
struct sockaddr_in c_addr, s_addr; bzero(&c_addr, sizeof(struct sockaddr)); bzero(&s_addr, sizeof(struct sockaddr)); /* set client_addr */ c_addr.sin_family = AF_INET; c_addr.sin_port = htons(atoi(client_port)); if (inet_aton(client_ip, (struct in_addr *)&c_addr.sin_addr.s_addr) == 0) { //WriteLog(client_log, "wrong client_ip!\n", num); exit(1); } /*create socket*/ int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { //WriteLog(client_log, "socket create error!\n", num); exit(1); } /*SO_REUSEADDR */ int reuseFlag = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &reuseFlag, sizeof(reuseFlag)) == -1) { //WriteLog(client_log, "setsockopt so_reuseaddr error!\n", num); exit(1); } /*bind client socket */ if (bind(sockfd, (struct sockaddr*)&c_addr, sizeof(struct sockaddr)) == -1) { //WriteLog(client_log, "bind client error!\n", num); exit(1); } /*set server_ip */ s_addr.sin_family = AF_INET; s_addr.sin_port = htons(atoi(server_port)); if (inet_aton(server_ip, (struct in_addr *)&s_addr.sin_addr.s_addr) == 0) { //WriteLog(client_log, "wrong server_ip!\n", num); exit(1); } /* connect to server */ while (connect(sockfd, (struct sockaddr*)&s_addr, sizeof(struct sockaddr)) == -1); //WriteLog(client_log, "connect success!\n", num);
0 0
- 2015华为软赛(二)——socket链接
- 2015华为软赛(八)——动作二
- 编译与链接(二)——静态链接
- 华为openday所闻所感——中兴面经与华为openday(二)
- 硬链接与软链接(二)
- 华为机试——字符串字母转换(二)
- 2015华为软赛(一)——环境
- 2015华为软赛(三)——基本流程
- 2015华为软赛(四)——数据结构设计
- 2015华为软赛(五)——基本功能函数
- 2015华为软赛(七)——动作一
- Socket服务(源码)——二
- 华为OJ(二)——图片整理
- 华为OJ(二)
- 理解 Linux 的硬链接与软链接(二)
- 华为笔试题(二)
- 华为机试(二)
- 华为机试题(二)
- windows下scrapy安装
- 二
- SQL语句的执行顺序
- IOS使用百度地图SDK,报引擎初始化失败
- 神奇的事情
- 2015华为软赛(二)——socket链接
- Java常见排序方法
- C++学习笔记之---中交换函数的几种写法与辨析
- 软件测试 - 单元测试简介
- TCP 三次握手 四次挥手
- leetcode--Combination Sum III
- getline()函数详解
- 【HAOI2015】【bzoj4033】【T1】
- js作用域