首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

TCP编程的一个小事例

2013-10-08 
TCP编程的一个小例子TCP程序的服务器端与客户端的流程图例子:服务器端等待客户端连接,若连接成功,则用户可

TCP编程的一个小例子

TCP程序的服务器端与客户端的流程图

TCP编程的一个小事例

例子:服务器端等待客户端连接,若连接成功,则用户可以通过客户端向服务器端发送任意字符串,服务器端在收到字符串后,输出相关信息,在把接受到的字符串重新发生给客户端。客户端收到后显示在屏幕上

服务器端:

#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <netdb.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <unistd.h>int main(){int len;struct sockaddr_in serverAddr;int clientSocket;char sendbuf[200];char recvbuf[200];if ((clientSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0){perror("socket error");return -1;}serverAddr.sin_family = AF_INET;serverAddr.sin_port = htons(5555);serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//connect()函数帮助客户端向指定地址的服务器发起一条TCP连接,成功返回0;第一个参数为连接套接字,第二个为服务器端的地址信息和协议信息if (connect(clientSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0){perror("connect");exit(1);}printf("connect with destination host...\n");while (1){printf("Input your Word:>");scanf("%s", sendbuf);//缺陷:不能传输带空格的句子printf("\n");if (strcmp(sendbuf, "quit") == 0)break;write(clientSocket, sendbuf, strlen(sendbuf));len = read(clientSocket, recvbuf, 200);recvbuf[len] = '\0';printf("recv data of my word is : %s\n", recvbuf);}close(clientSocket);return 0;}

注:有个小问题是为什么客户端不能循环输入?


UDP即无链接编程,和这个类似,一般用在P2P中,主要是创建socket的时候,要指定SOCK——DGRAM.

数据的收发调用sendto()和recvfrom().

热点排行