socket编程实例一个简单的面向socket实例,错在哪里?

socket编程实例  时间:2021-06-09  阅读:()

如何进行 Socket 编程

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。

在java中,有专门的socket类来处理用户的请求和响应。

利用SOCKET类的方法,就可以实现两台计算机之间的通讯。

这里就介绍一下在JAVA中如何利用socket进行网络编程。

在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。

getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。

GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。

程序可以对这些数据流根据需要进行进一步的封装。

本文的例子就对这些数据流进行了一定的封装(关于封装可以参考Java中流的实现部分)。

一、建立服务器类 Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。

ServerSocket server = new ServerSocket(9998) 这条语句创建了一个服务器对象,这个服务器使用9998号端口。

当一个客户端程序建立一个Socket连接,所连接的端口号为9998时,服务器对象server便响应这个连接,并且ept()方法会创建一个Socket对象。

服务器端便可以利用这个Socket对象与客户进行通讯。

Socket ing = ept() 进而得到输入流和输出流,并进行封装BufferedReader in = new BufferedReader(new InputStreamReader(ing.getInputStream())); PrintWriter out = new PrintWriter(ing.getOutputStream(),true); 随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。

从而可以根据程序的需要对客户端的不同请求进行回应。

关于VC++ socket如何实现聊天全双工

你这个程序采用udp发送/接收数据,并且使用了阻塞方式的Socket,这样在读数据时会一直等到读到数据后才能执行后面的步骤,写数据时也会等到将全部数据写完才执行后面的步骤。

修改这个程序首先要将创建的Socket改成异步读写的形式,然后使用select函数判断socket是否有数据可读和可以发送数据,并且udp发送的数据包不能过大,一包数据以不超过1392字节为宜。

一个简单的面向socket实例,错在哪里?

问题不少,看一下我修改后的代码,另外在exit前,应该把所有的socket都关闭,虽然默认的系统会在程序退出时自动帮你关掉,但这是一个好的编程习惯,应该自己在程序里关。

#include <sys/types.h> #include <sys/socket.h> #include &/in.h> #include <arpa/.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #define PORT 6677 #define MAXCLIENT 3 int main(int argc,char* argv[]) { int serSock, newConnSock; struct sockaddr_in addr; int addr_len = sizeof(struct sockaddr_in); char msg[] = "e from the server"; int connectedClient[MAXCLIENT], cli; for(cli = 0;cli<MAXCLIENT;cli++) { connectedClient[cli]=0; } serSock = socket(AF_INET, SOCK_STREAM, 0); if(serSock<0) { perror("socket"); exit(1); } else { printf("socket created "); printf("socketd id: %d ",serSock); } bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(serSock, (struct sockaddr*)&addr, sizeof(addr))<0) { perror("connect"); exit(1); } else { printf("connected. "); printf("local port: %d ", PORT); } if (listen(serSock, 3)<0) { perror("listen"); exit(1); } else { printf("listening...... "); } for (cli=0;cli<MAXCLIENT;cli++) { connectedClient[cli] = 0; } cli = 0; while(1) { newConnSock=ept(serSock, (struct sockaddr*)&addr, &addr_len); if (cli >= MAXCLIENT) { printf("socket reach maxsize %d, server ped, current socket %d: ", MAXCLIENT, cli); /* Should close newConnSock and connectedClient[] * before exiting */ exit(0); } if (newConnSock <= 0) { perror("ept"); } else { connectedClient[cli] = newConnSock; write(connectedClient[cli],msg,sizeof(msg)); printf("connected from %s ", _ntoa(addr.sin_addr)); printf("current socket: %d ",connectedClient[cli]); cli++; } printf("running for another loop... "); } }

香港九龙湾(27元) 2核2G 20元 香港沙田

弘速云是创建于2021年的品牌,运营该品牌的公司HOSU LIMITED(中文名称弘速科技有限公司)公司成立于2021年国内公司注册于2019年。HOSU LIMITED主要从事出售香港VPS、美国VPS、香港独立服务器、香港站群服务器等,目前在售VPS线路有CN2+BGP、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。可联系商家代安装iso系统。国庆活动 优惠码:hosu10-1产品介绍...

UCloud年度大促活动可选香港云服务器低至年134元

由于行业需求和自媒体的倾向问题,对于我们个人站长建站的方向还是有一些需要改变的。传统的个人网站建站内容方向可能会因为自媒体的分流导致个人网站很多行业不再成为流量的主导。于是我们很多个人网站都在想办法进行重新更换行业,包括前几天也有和网友在考虑是不是换个其他行业做做。这不有重新注册域名重新更换。鉴于快速上手的考虑还是采用香港服务器,这不腾讯云和阿里云早已不是新账户,考虑到新注册UCLOUD账户还算比...

CloudCone(1.99美元),可以额外选择Voxility高防IP

CloudCone 商家也是比较有特点的,和我们熟悉的DO、Vultr、Linode商家均是可以随时删除机器开通的小时计费模式。这个对于有需要短租服务器的来说是比较有性价比的。但是,他们还有一个缺点就是机房比较少,不同于上面几个小时计费服务商可以有多机房可选,如果有这个多机房方案的话,应该更有特点。这次我们可以看到CloudCone闪购活动提供洛杉矶三个促销方案,低至月付1.99美元。商家也可以随...

socket编程实例为你推荐
数据统计分析表EXCEL怎么制作百分比数据分析表图网站建立需要多少钱创立网站要多少钱数据库界面如何创建数据库收费视频怎么制作收费视频电子邮件软件常用的邮件收发软件web推送怎样关闭网页推送第三方支付系统→第三方支付平台有哪些私服发布站程序如何在电脑上建一个私服网站?有网站源码!中国黑客网介绍几个黑客网。竞争对手的主要优势竞争者的有事和劣势主要体现在哪些方面
如何查询域名备案号 2019年感恩节 新加坡服务器 512au 国外php空间 轻量 ca4249 dux 129邮箱 免费美国空间 免费智能解析 香港ip 学生机 vim linux命令vi g6950 华为云服务器宕机 dhcp服务器是什么 我的世界免费服务器 2000元电脑主机配置 更多