导航:首页 > 编程语言 > tcp服务器源代码

tcp服务器源代码

发布时间:2023-03-27 23:58:13

① 求 基于java的Modbus/TCP协议 源代码

public static void TestModbus() throws Exception{
IpParameters params = new IpParameters();
params.setHost("localhost");//地址
params.setPort(502);//端口
ModbusFactory factory = new ModbusFactory();
ModbusMaster master = factory.createTcpMaster(params, true);

// 初始化
try {
master.init();
readHoldingRegistersTest(master,1,0,3);

} catch (ModbusInitException e) {
e.printStackTrace();
} finally {
master.destroy();
}

}

public static void main(String[] args) {
try {
TestModbus();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

private static void readHoldingRegistersTest(ModbusMaster master,
int slaveId, int start, int len) {
try {
// ReadInputRegistersRequest request = new ReadInputRegistersRequest(
// slaveId, start, len);
// ReadInputRegistersResponse response = (ReadInputRegistersResponse) master
// .send(request);
ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(
slaveId, start, len);
ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) master
.send(request);
if (response.isException()) {
System.out.println("Exception response: message="
+ response.getExceptionMessage());
} else {
ByteQueue byteQueue= new ByteQueue(12);
response.write(byteQueue);
System.out.println(byteQueue);

System.out.println(Arrays.toString(response.getShortData()));
short[] list = response.getShortData();
for(int i = 0; i < list.length; i++){
System.out.print(list[i] + " ");
}
}
} catch (ModbusTransportException e) {
e.printStackTrace();
}
}

② 编写一个简单的TCP通信程序。服务器发送“你好我是服务器”,客户端接收该信息并显示在屏幕上。用Java写

1、服务器端

importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.net.ServerSocket;
importjava.net.Socket;

publicclassSocketServer{

privatestaticfinalintPORT=8088;

publicstaticvoidmain(String[]args){
ServerSocketserver=null;
try{
server=newServerSocket(PORT);
while(true){
Socketclient=server.accept();
newThread(newServer(client)).start();
}
}catch(IOExceptione){
e.printStackTrace();
}
}

}

classServerimplementsRunnable{

privateSocketclient;

publicServer(Socketclient){
this.client=client;
}

publicvoidrun(){
DataOutputStreamoutput=null;
try{
output=newDataOutputStream(client.getOutputStream());
output.writeUTF("你好我是服务器");
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(output!=null)output.close();
output=null;
}catch(IOExceptione){}
}
}

}

2、客户端

importjava.io.DataInputStream;
importjava.io.IOException;
importjava.net.Socket;
importjava.net.UnknownHostException;

{

privatestaticfinalintPORT=8088;

publicstaticvoidmain(String[]args){
Socketsocket=null;
try{
socket=newSocket("127.0.0.1",PORT);
DataInputStreamin=newDataInputStream(socket.getInputStream());
Stringres=in.readUTF();
System.out.println(res);
if(in!=null)in.close();
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(socket!=null){
try{
socket.close();
}catch(IOExceptione){}
}
}
}
}

③ 求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释

最简单的那种?我给你写一个=,=
//服务器
#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>

main()

{
//创建套接字

int serverSocket= socket(AF_INET,SOCK_STREAM,0);

struct sockaddr_in server_addr;

struct sockaddr_in clientAddr;

int addr_len = sizeof(clientAddr);
int client;
char buffer[200];

//创建地址

bzero(&server_addr,sizeof(server_addr));

server_addr.sin_family =AF_INET;

server_addr.sin_port = htons(5555);

server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

//绑定

bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));
//帧听

listen(serverSocket,5);
printf("客户端发过来的 :\n");
//接收
client=accept(serverSocket,(sockaddr *)&clientAddr,(socklen_t*)&addr_len);
printf("客户端发过来的 :\n");
while(1)
{
if(recv(client,buffer,sizeof(buffer),0)>0)
printf("客户端发过来的 : %s\n",buffer);
}
return 0;
}

//客户端
#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>

main()

{

struct sockaddr_in serverAddr;

int clientSocket=socket(AF_INET,SOCK_STREAM,0);

char sendbuf[200];

//创建地址信息

serverAddr.sin_family=AF_INET;

serverAddr.sin_port=htons(5555);

serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1");

//连接服务器

connect(clientSocket,(sockaddr*)&serverAddr,sizeof(serverAddr));

printf("连接目标主机中.....\n连接完成......\n");

//

while(1)

{

printf("请输入发给服务器的数据 : ");

scanf("%s",sendbuf);

//strcmp函数作用,比较两个东东(按ASCII值大小相比较),相同就==0。

if(strcmp(sendbuf,"x")==0)

break;

send(clientSocket,sendbuf,sizeof(sendbuf),0);

}

close(clientSocket);

return 0;

}

④ LINUX网络编程TCP服务器 客户端 有乱码怎么解决

解决抄办法:
1.在客户端n=read(socketfd,buff,1023);代码之前加上memset(buff,0,sizeof(buff));,这是保证收到较短数据(使用TCP你不能保证每次接收的数据和发送的数据时等长的),打印也是正确的;
2.将客户端buff[n+1]+='\0';修改为buff[n]='\0';,这是因为n是下标,已经是最后一个位置了;
3.将服务器端buff[n+1]+='\0';修改为buff[n]='\0';,这是因为n是下标,已经是最后一个位置了,而且和第2)一样,那个加号也要去掉,应该是笔误吧;
4.最大的问题,将服务器端write(connectfd,buff,1023);,你怎么能够保证收到1023个字符呢?也应该将while中条件移出作为WHILE中的一条语句,而且加上前面所述的memset语句,而将这里的write(connectfd,buff,1023);修改为write(connectfd,buff,strlen(buff))。
祝共同进步!

⑤ 求TCP/IP 源代码 要求有中文注释~~~~~

lz说的应该不是协议,而是实现TCP/IP协议内容的具体代码,如C语言等;《用TCP/IP进行网际互联第二卷:设计、实现与内核》(第三版)【Internetworking
With
TCP/IP
Vol
II:Designed,Implementation,and
Internals
Third
Edition】上有C代码实现,但没有中文注释,只有英文注释,我想应该没有中文注释教材的吧,有也不好找的,反正我没见过,呵呵!

⑥ TCP客户端程序源代码如何编写

int client() { system("color 0a"); //修改DOS窗口颜色,是其成0A。 WORD wVersion=MAKEWORD(1,1); WSADATA wsData; int nResult= WSAStartup(wVersion,&wsData); //启动WINSOCKET if(nResult !=0) { printf("启动Winsock失败!\n"); } SOCKET sc=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); //创建套接字 if(sc==INVALID_SOCKET) { printf("创建套接字失败!\n"); } SOCKADDR_IN addrSc; addrSc.sin_family=AF_INET; addrSc.sin_port=htons(portNum); //保证字节顺序 char IP[20]; again: printf("请输入服务器的IP地址:"); gets(IP); if( -1==inet_addr(IP) ) //循环检测IP地址是否合法 { printf("IP地址错误!\n"); goto again; } addrSc.sin_addr.S_un.S_addr=inet_addr(IP); int b=0; while(b<5) //检测5次,如果服务器在此时间内启动,则进行连接 { nResult=connect(sc,(SOCKADDR*)&addrSc,sizeof(SOCKADDR)); //套接字连接 Sleep((DWORD)100); //延时1秒 if(nResult==SOCKET_ERROR) { printf(" %d 次连接失败!\n",b+1); } else break; b++; } if(nResult==SOCKET_ERROR) { printf("登陆超时,请重新登陆!\n"); goto again; } char *buf="连接成功!"; //向服务端验证连接成功 nResult=send(sc,buf,strlen(buf)+1,0); if(nResult==SOCKET_ERROR) { printf("5.套接字发送数据失败!\n"); return 0; } char mess[M]; nResult =recv(sc,mess,strlen(mess),0); //接受服务端的连接验证信息 if(nResult == -1 ) //判断服务端是否关闭 { printf("\n服务端已断开\n"); system("pause"); exit(0); } printf("%s\n",mess); tianle: system("cls"); //清屏 puts("\n\n"); puts(" * * "); puts(" * 欢·迎·使·用·局·域·网·文·件·发·送·工·具 *"); puts(" * (客 户 端) * "); puts(" * * "); puts(" * * "); puts(" * 请等待服务端的相应操作 * "); puts(" * * "); puts(" * * "); puts(" * 天乐软件工作室制作 * "); puts(" * 2008-3-1 * "); puts(" * 版权所有★欢迎传播 * "); puts("全屏(退出全屏)操作请按:ALT+ENTER\n"); char rMess[100]; nResult=recv(sc,rMess,strlen(rMess),0); //接收服务端发来的操作请求 if(nResult==-1) //判断服务端是否关闭 { printf("\n服务端已断开\n"); system("pause"); goto tianle; } printf("%s\n",rMess); char ch; char str[100]; gets(str); ch=str[0]; while( ch!='Y' && ch!='y' && ch!='N' && ch!='n' ) //处理客户端的错误输入 { printf("输入有误,请重新输入(Y/N):"); gets(str); ch=str[0]; } send(sc,&ch,sizeof(char),0); //向服务端反馈选择,并执行相应操作 if(strcmp(rMess,"服务端向你传送文件,是否接受(Y/N):")==0 && (ch=='Y' || ch=='y') ) { receiveFile(sc); } if(strcmp(rMess,"服务端向你发起聊天,是否接受(Y/N):")==0 && (ch=='Y' || ch=='y') ) { chatting_client(sc); } if(ch=='N' || ch=='n') { printf("你拒绝了!\n"); system("pause"); } system("cls"); goto tianle; nResult=closesocket(sc); //关闭套接字 if(nResult==SOCKET_ERROR) { printf("8.关闭套接字失败!\n"); return 0; } }

满意请采纳

⑦ 如何用udp协议实现tcp协议

直接上代码,仅供参考,具体 tcp、udp的通信原理很容易找到。
TCP服务器端代码:

try {
Boolean endFlag = false;
ServerSocket ss = new ServerSocket(12345);
while (!endFlag) {
// 等待客户端连接
Socket s = ss.accept();
BufferedReader input = new BufferedReader(newInputStreamReader(s.getInputStream()));
//注意第二个参数据为true将会自动flush,否则需要需要手动操作output.flush()
PrintWriter output = newPrintWriter(s.getOutputStream(),true);
String message = input.readLine();
Log.d("Tcp Demo", "message from Client:"+message);
output.println("message received!");
//output.flush();
if("shutDown".equals(message)){
endFlag=true;
}
s.close();
}
ss.close();

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
TCP客户端代码:

try {
Socket s = new Socket("localhost", 12345);
// outgoing stream redirect to socket
OutputStream out = s.getOutputStream();
// 注意第二个参数据为true将会自动flush,否则需要需要手动操作out.flush()
PrintWriter output = new PrintWriter(out, true);
output.println("Hello IdeasAndroid!");
BufferedReader input = new BufferedReader(newInputStreamReader(s
.getInputStream()));
// read line(s)
String message = input.readLine();
Log.d("Tcp Demo", "message From Server:" + message);
s.close();

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

下面我们看看UDP:

UDP服务器端代码:

// UDP服务器监听的端口
Integer port = 12345;
// 接收的字节大小,客户端发送的数据不能超过这个大小
byte[] message = new byte[1024];
try {
// 建立Socket连接
DatagramSocket datagramSocket = new DatagramSocket(port);
DatagramPacket datagramPacket = new DatagramPacket(message,
message.length);
try {
while (true) {
// 准备接收数据
datagramSocket.receive(datagramPacket);
Log.d("UDP Demo", datagramPacket.getAddress()
.getHostAddress().toString()
+ ":" + new String(datagramPacket.getData()));
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (SocketException e) {
e.printStackTrace();
}

UDP客户端代码:

public static void send(String message) {
message = (message == null ? "Hello IdeasAndroid!" : message);
int server_port = 12345;
DatagramSocket s = null;
try {
s = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
InetAddress local = null;
try {
// 换成服务器端IP
local = InetAddress.getByName("localhost");
} catch (UnknownHostException e) {
e.printStackTrace();
}
int msg_length = message.length();
byte[] messagemessageByte = message.getBytes();
DatagramPacket p = new DatagramPacket(messageByte, msg_length, local,
server_port);
try {
s.send(p);
} catch (IOException e) {
e.printStackTrace();
}
}

阅读全文

与tcp服务器源代码相关的资料

热点内容
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99
lua语言编程用哪个平台 浏览:272
政采云如何导出pdf投标文件 浏览:529
php获取postjson数据 浏览:551
javatimetask 浏览:16
编程的话要什么证件 浏览:94
钱脉通微信多开 浏览:878
中学生学编程哪个培训机构好 浏览:852
荣耀路由TV设置文件共享错误 浏览:525

友情链接