随笔分类 -  网络编程

socket linux
摘要:服务器端程序的编译gcc -o file_server file_server.c客户端程序的编译gcc -o file_client file_client.c服务器程序和客户端程应当分别运行在2台计算机上.服务器端程序的运行,在一个计算机的终端执行./file_server客户端程序的运行,在另一个计算机的终端中执行./file_client 运行服务器程序的计算机的IP地址根据提示输入要传输的服务器上的文件,该文件在服务器的运行目录上在实际编程和测试中,可以用2个终端代替2个计算机,这样就可以在一台计算机上测试网络程序,服务器端程序的运行,在一个终端执行./file_server客户端程 阅读全文
posted @ 2010-12-17 14:36 flyxiang
摘要:编译方式:gcc -pthread -o chat_server chat_server.c#include pthread.h#include sys/errno.h#include "chat.h"#define LENGTH_OF_LISTEN_QUEUE (20)#define USER_AMOUNT_MAX (50)#define NOT_LOGIN (-1)#define NOT_IN_USE (NOT_LOGIN -1)#define USER_ID_SIZE (ID_SIZE)typedef struct user{ char user_ID[USER_ID_SIZE] 阅读全文
posted @ 2010-12-17 14:33 flyxiang
摘要:编译方式:gcc -o chat_client chat_client.c#include "chat.h"#include unistd.h // for fork#include sys/signal.h // for signal#include sys/wait.h // for wait#include fcntl.hstatic char user_ID[BUFFER_SIZE]; //一个很大的缓冲区,实际ID_SIZE内有效static char password[BUFFER_SIZE]; //一个很大的缓冲区,实际PASSWORD_SIZEE内有效stati 阅读全文
posted @ 2010-12-17 14:32 flyxiang
摘要:服务器端的实现:#include sys/types.h#include sys/socket.h#include netinet/in.h//sockaddr_in等结构的定义#include netdb.h//addrinfo等结构的定义#include stdio.h#include unistd.h#include dirent.h#include string.h#include sys/stat.h#include fcntl.h#include stdlib.h#define TRUE 1#define LISTEN_PORT 3499 阅读全文
posted @ 2010-12-17 14:27 flyxiang
摘要:socket()——生成socket句柄#include sys/types.h; #include sys/socket.h; int socket(int domain, int type, int protocol); domain : "AF_INET"type : SOCK_STREAM(TCP), SOCK_DGRAM (UDP)protocol:0返回值:socket句柄(整型);(注意:有很多种 domain、type,请看 socket() 的 man帮助。另一个方式去得到 protocol。同 时请查阅 getprotobyname() 的 man 帮助。)int 阅读全文
posted @ 2010-12-17 12:32 flyxiang
摘要:先是建立服务器程序:#include stdio.h#include stdlib.h#include string.h#include netinet/in.h#include sys/socket.h#include unistd.h#include sys/types.h#define MYPORT 5858#define BACKLOG 10#define MAXSIZE 80#define BUFSIZE 100//单独的数据处理 就是简单的从client端接受数据, 然后又发给client端void str_ser(int new_fd) {char b 阅读全文
posted @ 2010-12-17 12:29 flyxiang
摘要:最近在做一个在开发板启动后,程序运行前首先检查一下网络是否已经连通的东西。参考了网上的一些方法,现在整理一下。(使用system(ping IPaddress)也可以办到) 其实问题的关键是,如何设置connect函数能够在指定的时间内返回。如果直接connect一个IP地址,不成功的话将会是一个漫长的等待时间。测试了一下2分钟内没有反映,但是网上有人说是75秒,还需要进一步确认啊!过程如下:(1)调用fcntl,将socket置为非阻塞模式; (2)connect(); (3)判断connect()的返回值,一般情况会返回-1,这时你还必须判断错误码如果是EINPROGRESS,那说明co 阅读全文
posted @ 2010-12-17 11:21 flyxiang