问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux socket编程代码

发布网友 发布时间:2022-05-06 05:44

我来回答

1个回答

热心网友 时间:2022-06-28 19:54

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>

char *host_name="127.0.0.1";
int port=7778;

struct student
{
char name[20];
char num[20];
float score;
}t={"xiejian","200701415",89.9};

int main ( )
{
char buf[502];
int socket_descriptor;
struct sockaddr_in pin;
bzero(&pin,sizeof(pin));
pin.sin_family=AF_INET;
inet_pton(AF_INET,host_name,&pin.sin_addr);
pin.sin_port=htons(port);
if((socket_descriptor=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("Error openung socket!\n");
exit(1);
}
if(connect(socket_descriptor,(void *)&pin,sizeof (pin))==-1)
{
perror("can not connecting to server!\n");
exit (1);
}
printf("Send message to server ...\n");
//memset(buf,0,502);
//memcpy(buf,(void *)&t,sizeof(t));
//sprintf(buf,"%s %d",t.name,t.num);
//printf("the first string : %s\n",buf);
if(send(socket_descriptor,(void *) &t,sizeof(t),0)==-1)
{
perror("can not send message!\n");
exit (1);
}
printf("waiting for response from server!\n");
memset(buf,0,502);
if(recv(socket_descriptor,buf,sizeof(buf),0)==-1)
{
perror("can not receive response !\n");
exit (1);
}
printf("\n Response from server : \n");
memcpy((struct student *)&t,buf,sizeof(buf));
//printf("the string : %s \n",rebuf);
printf("--%s--%s--%5.1f--\n",t.name,t.num,t.score);
close (socket_descriptor);
}

/* 注意在send 结构体时应该把结构体强制类型转换为void * 型
** 接受之后又要强制转换回结构体型!否则则穿过来的是结构体的
** 一部分!
*/

下面是服务端
#include<stdio.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netdb.h>

int port=7778;
struct student
{
char name[20];
char num[20];
float score;
}t;

main()
{
struct sockaddr_in sin;
struct sockaddr_in pin;
int sock_descriptor;
int temp_sock_descriptor;
int size_of_addr;
//struct cfg a;
char buf[502];
int i,lenth;
sock_descriptor=socket(AF_INET,SOCK_STREAM,0);
if(sock_descriptor==-1)
{
perror("socket!\n");
exit(1);
}
bzero(&sin,sizeof(sin));
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_port=htons(port);
if(bind(sock_descriptor,(struct sockaddr *)&sin,sizeof (sin))==-1)
{
perror("bind!\n");
exit(1);
}
if(listen (sock_descriptor,20)==-1)
{
perror("listen!\n");
exit(1);
}
printf("Waiting for accepting connection from client!\n");
while(1)
{
printf("the process is waiting here!\n");
temp_sock_descriptor=accept(sock_descriptor, (struct sockaddr *)&pin,&size_of_addr);
if(temp_sock_descriptor==-1)
{
perror("call to accept!\n");
exit (1);
}
memset(buf,0,502);
if(recv(temp_sock_descriptor,buf,sizeof(buf),0)==-1)
{
perror("recv!\n");
exit (1);
}

printf("received : \n");
//printf("the recv buf is :%s\n",buf);
memcpy((struct student *) &t,buf,sizeof(buf));
printf("--%s--%s--%5.1f--\n",t.name,t.num,t.score);
if(send (temp_sock_descriptor,(void *) &t,sizeof(t),0)==-1)
{
perror("send!\n");
exit(1);
}
close (temp_sock_descriptor);
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... C++编辑Socket的代码 C# Socket发送文件的代码,越少越好,只要有用的代码就可以 这一年多来额头眉心长痘痘一直反反复复,以前从来不会这样的,刚开始的时候是就是肉色,第二天就红了,而 谢娜微博 谢娜因为发了这一条微博,为什么整个城市的人都在骂她 如何评价谢娜微博一亿粉丝这件事情? 谢娜发微博自嘲是怎么回事? 谢娜发了一条什么样的微博?竟然惊动了张杰和赵丽颖? 谢娜为什么删除微博? 主持人谢娜最近发生了什么事? 注册一直显示系统升级怎么回事? 谢娜突然更改微博个人认证,你觉得她的做法出于何意? - 信息提示 谢娜的微博事件是怎么回事? 为什么微信注册不了,微信说要更新但已经是最新的版本? 新用户注册不了?新用户注册显示系统正在升级 新用户注册不了?新用户注册显示系统正在升级 微信注册不了,一直都在系统升级中,怎么办? 怎么起比较有意义 迈阿密大学与罗格斯大学哪个好 光呼吸有什么特点?说明C2循环和C3循环的关系 求C++,socket聊天程序的代码,最好是实现了两个客户端之间经由服务器的信息互发,聊天功能要完整些 三磷酸腺苷 - 什么是ATP socket编程问题(附代码) (2014?江西模拟)光呼吸是进行光合作用的细胞在光照和O2CO2值异常情况下发生的一个生理过程,该过程借助 请问光呼吸产生的三碳酸也进入卡尔文循环,不应该是好事吗?为什么总要抑制光呼吸? 网上的socket代码,为什么我客户端输入效果不一样?python2.7 影响光反应阶段的主要因素 求JAVA汉诺塔相关的socket代码 光呼吸产生的二氧化碳可作为光合作用的第几阶段的原料? socket?这段代码是什么意思? 梦见给一只脏了的鹅洗澡是什么意思? 荣耀PLAY5T如何打开游戏设备号 荣耀play怎样设置玩游戏比较好 荣耀play游戏助手怎么开 家里自制冰棍怎么做好吃 cad2008画图时的虚线,为什么打印不出来?求助,急,哪种虚线可以打印出来。谢谢 家里只有鸡蛋和苹果,怎么做冰棍呢? 买厂房要交什么税 购入的土地使用权用于建造厂房要交哪些税